Docker 在构建镜像时无法删除文件

2023-12-31

我的 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:

  1. 由于 IP 的原因,我无法在这里发布完整的 Dockerfile。而且,这可能没有必要。正如我所提到的,我什至可以通过手动运行容器并尝试执行命令来模拟问题
  2. 在我尝试删除该文件之前该文件已存在
  3. 我错误地认为问题列表中没有类似的错误。这是one https://github.com/docker/docker/issues/783
  4. 问题可能与该文件无关。删除文件夹中的其他文件/文件夹也会使它们显示为???权限
  5. 执行操作的用户是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=1Anaconda 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(使用前将#替换为@)

Docker 在构建镜像时无法删除文件 的相关文章

随机推荐

  • CUDA 链接错误 - Visual Express 2008 - 由于(空)配置文件导致 nvcc 致命

    在过去的两周里 我一直在广泛寻找可能的解决方案来解决我的错误 我已经成功安装了Cuda 64位编译器 工具 和SDK以及64位版本的Visual Studio Express 2008和带有Framework 3 5的Windows 7 S
  • 寻找机器人在房子里定位的方法

    我正在破解一个吸尘器机器人用微控制器 Arduino 控制它 我想要做到打扫房间时更有效率 目前 它只是直行并在碰到物体时转向 但我很难找到最佳算法或方法用于知道它在房间中的位置 我正在寻找一种既便宜 不到 100 美元 又不太复杂 不需要
  • 如何在 Fortran 中即时增加数组大小?

    我的程序通过 3D 数组运行 标记它找到的 簇 然后进行一些检查以查看是否有任何相邻簇的标签高于当前簇 还有第二个数组保存 正确的 簇标签 如果它发现第 n 个相邻簇被正确标记 则将该元素分配给 0 否则将其分配给正确的标签 例如 如果第
  • 如何在 Retrofit 请求正文中 POST 原始整个 JSON?

    这个问题之前可能已经被问过 但没有得到明确的答案 到底如何在 Retrofit 请求的正文中发布原始的整个 JSON 查看类似问题here https stackoverflow com questions 19099536 post bo
  • 使用 SSH 远程运行 Shell 脚本块

    我尝试使用 shell 脚本在不同的服务器上执行命令块 谁能帮我解决这个问题吗 while RecordCount gt 0 do expXXXXX sed n RecordCount p GUID DLT EXPR FILE cut d
  • 如何在 PHP 中检查我是否处于静态上下文中?

    有什么方法可以检查方法是静态调用还是在实例化对象上调用 请尝试以下操作 class Foo function bar static isset this this instanceof self
  • 为什么127*2换成byte结果是-2?

    这是我的代码 public class test public static void main String args byte a byte 127 b 2 byte c byte a b System out println c 为什
  • 如何让div出现在另一个div的前面?

    请参考下面的代码 ul li style height 100px div style height 500px background color black div li ul 从上面的代码我们知道我们只能看到100px高度的黑色背景 我
  • 如何使用 URL 传递 PHP 变量

    我想使用 URL 传递一些 PHP 变量 我尝试了以下代码 链接 php pass php pre code code pre
  • 神经网络发散而不是收敛

    我已经实现了一个 2 层的神经网络 使用 CUDA 每层 2 个神经元 我试图让它使用反向传播学习 2 个简单的二次多项式函数 但它没有收敛 而是发散 输出变得无穷大 以下是有关我尝试过的更多详细信息 我已将初始权重设置为 0 但由于它是发
  • 嵌套Python列表推导式来构造列表列表

    我是一个Python新手 在摸索嵌套列表理解时遇到了麻烦 我正在尝试编写一些代码来读取文件并为每行的每个字符构建一个列表 所以如果文件包含 xxxcd cdcdjkhjasld asdasdxasda 结果列表将是 x x x c d c
  • Nhibernate 中多对多集合的更新导致连接表中的多个删除

    我有一个类 其中包含一个使用 Fluent Nhibernate 映射到多对多数据库关系的集合 映射如下 Table Book Id x gt x Id Map x gt x Title Map x gt x NumberOfPages H
  • JQuery 星级评定 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 任何人都可以建议一个易于设置的简单 JQuery 五星级评级脚本 我只需要单个页面上的单个实例 我不在乎它是否写入文件或 mysql 数据库来计算评分
  • 带 Angular 的鹅毛笔表,无法在编辑模式下工作

    我有一个 Angular 应用程序 我有一个表单并使用了 quill better table https www npmjs com package quill better table https www npmjs com packa
  • WinForms:在设计器中将自定义 ToolStripMenuItem 添加到 MenuStrip

    在 Windows 窗体中如果我创建一个继承自的自定义控件ToolStripMenuItem有没有办法添加这个CustomToolStripMenuItem to MenuStrip来自设计师还是我必须通过代码来完成 自从ToolStrip
  • Scipy 中使用 NaN 值进行 T 检验

    我在 scipy 中进行 t 检验时遇到问题 这让我慢慢发疯 它应该很容易解决 但我所做的一切都不起作用 并且通过广泛的搜索也找不到解决方案 我在最新的 Anaconda 发行版上使用 Spyder 具体来说 我想比较从 csv 文件导入的
  • 在 C 中的循环/IF 结构之外声明变量

    我是 C 语言新手 总体来说是编程新手 我想知道为什么当我在结构外部的 if 语句中声明要使用的变量时 我收到的输出不正确 无论如何对于这段代码 这是我的代码 include
  • 从 URL 下载图像并将其保存到内部存储器的最佳方法

    我正在开发一个应用程序 我想从 URL 下载图像 我需要立即下载这些图像并将其存储到内部存储器中 有超过200张图片可供下载 请告诉我在尽可能短的时间内下载这些图像的最佳方法 如果有任何第三方库可用 请告知 考虑使用毕加索来达到您的目的 我
  • C# 线程对象生命周期

    假设我有一段代码如下 int Main if true new Thread gt doSomeLengthyOperation Start while true do nothing 有 2 个线程 我将把正在执行 Main 函数的线程称
  • Docker 在构建镜像时无法删除文件

    我的 DockerFile 包含以下指令 rm f plugins 7z 此命令在早期版本的 docker 中按预期工作 但在版本 1 13 中失败 我看到错误 cannot access plugins 7z No such file o