我的 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 问题 https://github.com/docker/docker/issues。如何进一步调试该问题?
Edit:
- 由于 IP 的原因,我无法在这里发布完整的 Dockerfile。而且,这可能没有必要。正如我所提到的,我什至可以通过手动运行容器并尝试执行命令来模拟问题
- 在我尝试删除该文件之前该文件已存在
- 我错误地认为问题列表中没有类似的错误。这是one https://github.com/docker/docker/issues/783
- 问题可能与该文件无关。删除文件夹中的其他文件/文件夹也会使它们显示为???权限
- 执行操作的用户是root
删除目录失败的原因是支持 (xfs
) 文件系统未使用 d_type 支持进行格式化(“ftype=1”);你可以在 github 上找到讨论;https://github.com/docker/docker/issues/27358 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
这一要求也被描述在RHEL/CentOS 发行说明 https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/7.2_Release_Notes/technology-preview-file_systems.html
请注意,XFS 文件系统必须使用以下命令创建-n ftype=1
启用选项以用作覆盖。使用 rootfs 和系统安装期间创建的任何文件系统,设置--mkfsoptions=-n ftype=1
Anaconda kickstart 中的参数。安装后创建新文件系统时,运行# mkfs -t xfs -n ftype=1 /PATH/TO/DEVICE
命令。要确定现有文件系统是否适合用作覆盖,请运行# xfs_info /PATH/TO/DEVICE | grep ftype
命令查看是否ftype=1
选项已启用。
为了解决这个问题;
- 重新格式化设备
ftype=1
- 使用不同的存储驱动程序。请注意,不建议将默认设备映射器配置(使用环回设备)用于生产用途,因此需要手动配置。
为了向后兼容(旧版本的 docker 允许在没有d_type
),docker 1.13只会记录一个warning在守护程序日志中(https://github.com/docker/docker/pull/27433 https://github.com/docker/docker/pull/27433),但未来版本将不再支持。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)