我的DockerFile包含以下指令:
rm -f plugins.7z
此命令在早期版本的docker中按预期工作,但在版本1.13时失败。我看到了错误:
cannot access plugins.7z: No such file or directory
如果我打开带有基本映像的容器并手动执行命令,我会看到同样的错误。
尝试列出文件夹内容显示:
# ls -lrt
ls: cannot access plugins.7z: No such file or directory
total 12
??????????? ? ? ? ? ? plugins.7z
这未列为Docker Issues中的已知问题。如何进一步调试问题?
编辑:
答案 0 :(得分:3)
删除目录失败的原因是后备(xfs
)文件系统未使用d_type支持格式化(" ftype = 1");你可以在github找到一个讨论; https://github.com/docker/docker/issues/27358。
要验证系统上是否有d_type
支持,请检查docker info
的输出;
Server Version: 1.13.1
Storage Driver: overlay
Backing Filesystem: xfs
Supports d_type: false
Logging Driver: json-file
此要求也在release notes for RHEL/CentOS
中描述请注意,必须在启用
-n ftype=1
选项的情况下创建XFS文件系统,以用作叠加层。使用rootfs和系统安装期间创建的任何文件系统,在Anaconda kickstart中设置--mkfsoptions=-n ftype=1
参数。在安装后创建新文件系统时,请运行# mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE
命令。要确定现有文件系统是否有资格用作叠加层,请运行# xfs_info /PATH/TO/DEVICE | grep ftype
命令以查看是否已启用ftype=1
选项。
要解决此问题,请<; p>
ftype=1
为了向后兼容(较旧版本的docker允许在没有d_type
的系统上运行覆盖),docker 1.13只会在守护程序日志中记录警告(https://github.com/docker/docker/pull/27433) ,但将来的版本将不再支持。
答案 1 :(得分:0)
能够解决问题。
1.13的change log表示
"IMPORTANT: On Linux distributions where devicemapper was the default
storage driver, the overlay2, or overlay is now used by default
(if the kernel supports it)."
所以我尝试放回devicemapper,它现在按预期工作。