Dockerfile“rm -Rf”失败

我有一个非常简单的dockerfile,安装后用“rm -Rf”来删除安装文件,但是我得到了一些错误:

步骤4/4:RUN rm -Rf / INSTALLATION
  --->在19fe828f3c9d中运行
 rm:不能删除'/ INSTALLATION / Subsystems / Common':目录不为空
 rm:不能删除'/ INSTALLATION / Subsystems / EMS':目录不为空

我用root用户运行所有。

我的dockerfile:

从centos
复制安装/ /安装/ 
运行rm -Rf /安装

我的操作系统是centos7,主机操作系统是RHLE 7。

docker信息

 [root @ snap460c03 1]#docker信息
容器:53
 运行:27
 暂停:0
 停了下来:26
图片:19
服务器版本:1.13.0
存储驱动程序:覆盖
 备份文件系统:xfs
 支持d_type:false
logging驱动程序:json文件
 Cgroup驱动程序:cgroupfs
插件: 
 卷:本地
 networking:桥主机macvlan空覆盖
群:不活跃
运行时:runc
默认运行时:runc
初始化二进制文件:docker-init
容器版本:03e5862ec0d8d3b3f750e19fca3ee367e13c090e
 runc版本:2f7393a47307a16f8cee44a37b262e8b81021e3e
 init版本:949e6fa
安全选项:
 的Seccomp
  configuration文件:默认
内核版本:3.10.0-229.el7.x86_64
操作系统:红帽企业Linux服务器7.1(迈波)
 OSType:linux
架构:x86_64
 CPU:24
总内存:94.41 GiB
名称:snap460c03
 ID:T3ST:6DXJ:SDST:3W3J:Z4NB:UXF7:HGSZ:A3WH:ELHX:GVZW:APTD:7ZEK
 Docker根目录:/ var / lib / docker
debugging模式(客户端):false
debugging模式(服务器):false
 Http代理:http://16.85.88.10:8080/
没有代理:dockerregistry
registry:https://index.docker.io/v1/
实验:假
不安全的注册局:
 docker工人的registry:5000
  127.0.0.0/8
 Live Restore Enabled:false

我也尝试了一个新的容器,手动尝试,但结果也是错误的:

 [root @ devvm13 1]#docker run -it e20c9c5ffa8a / bin / bash

 [root @ f3efa193700d /]#rm -Rf / INSTALLATION / Subsystems / Common / *

 [root @ f3efa193700d /]#rm -Rf / INSTALLATION / Subsystems / Common 

 rm:不能删除'/ INSTALLATION / Subsystems / Common':目录不为空

你可以看到第二个RM失败,我试过rmdir,结果也是错误的。

当我login目录时,它显示:

 ls / INSTALLATION / Subsystems / Common
 ls:无法访问/INSTALLATION/Subsystems/Common/eium-license.config:没有这样的文件或目录
 ls:无法访问/INSTALLATION/Subsystems/Common/install_jdk.sh:没有这样的文件或目录
 eium-license.config install_jdk.sh

你可以说没有这样的文件,但随着文件。

这是你的问题:

 Supports d_type: false 

您可能正面临这个问题: https : //github.com/moby/moby/issues/31283

您将需要重新格式化xfs文件系统,如:

 mkfs -t xfs -n ftype=1 -f /path/to/device 

(我们需要强制选项)。

更多信息: https : //docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html

我有同样的问题,花了几个小时后发现这个问题: – https://github.com/docker/docker/issues/27358

所以长话短说,这里是我如何修复它。

当你做一个docker信息时,在你的输出中你有Storage Driver: overlay ,我有同样的,我做的是改变覆盖到devicemapper。 按照这里显示的说明 – https://docs.docker.com/engine/userguide/storagedriver/device-mapper-driver/#configure-docker-with-the-devicemapper-storage-driver

您将不得不停止并启动泊坞窗服务。

注意:一旦你改变你将失去所有你的过去的图像,意味着你不会看到任何图像/容器,当你inputdocker imagesdocker ps 。 他们将在文件系统中,他们将占用磁盘空间。 所以你将不得不手动删除那个目录,所以它将在/var/lib/docker/overlay

我相信这是一个docker问题。

您可以尝试以下解决方法:

 RUN rm -Rf /INSTALLATION/*