Docker在生成图像时无法删除文件
我的DockerFile包含以下说明:Docker在生成图像时无法删除文件,docker,Docker,我的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
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
此问题未列为中的已知问题。如何进一步调试该问题
编辑:
我们能够克服这个问题 1.13的预测结果显示
"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,它现在可以正常工作了。删除目录失败的原因是备份(
xfs
)文件系统没有格式化为d_类型支持(“ftype=1”);您可以在github;上找到讨论
要验证您的系统上是否有d_type
支持,请检查docker info
的输出
Server Version: 1.13.1
Storage Driver: overlay
Backing Filesystem: xfs
Supports d_type: false
Logging Driver: json-file
此要求也在中进行了说明
请注意,创建XFS文件系统时必须启用-n ftype=1
选项以用作覆盖。使用rootfs和在系统安装期间创建的任何文件系统,在Anaconda kickstart中设置--mkfsoptions=-n ftype=1
参数。安装后创建新文件系统时,请运行35;mkfs-t xfs-n ftype=1/PATH/TO/DEVICE
命令。要确定现有文件系统是否适合用作覆盖,请运行xfs_info/PATH/To/DEVICE | grep ftype
命令,查看是否启用了ftype=1
选项
解决问题,
- 使用
ftype=1重新格式化设备
- 使用不同的存储驱动程序。请注意,默认设备映射器配置(使用环回设备)不建议用于生产,因此需要手动配置
为了向后兼容(docker的旧版本允许在没有
d_type
的系统上运行overlay),docker 1.13将只在守护程序日志()中记录警告,但在将来的版本中不再受支持。您可以发布完整的docker文件吗?插件文件在哪里?哪个目录?也许你试图从错误的路径上删除它?我在Docker 1.12.6中遇到了这个问题——问题是文件系统支持d_类型,正如下面的答案和评论中所充分解释的那样。你可以分享更多的细节吗?@VatsalPrakash我尝试的只是权宜之计。请看接受的答案。正确的解决方案是在具有不同文件系统的磁盘上安装docker。。Thanxx:)