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://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 images
或docker ps
。 他们将在文件系统中,他们将占用磁盘空间。 所以你将不得不手动删除那个目录,所以它将在/var/lib/docker/overlay
。
我相信这是一个docker问题。
您可以尝试以下解决方法:
RUN rm -Rf /INSTALLATION/*