由于权限问题,无法移动或删除单文件 docker 卷

由于权限问题,无法移动或删除单文件 docker 卷

我是否可以这样做:如果我将单文件 docker 卷连接到容器,并且应用程序尝试移动或删除该文件,则系统允许它,而不是返回“权限被拒绝。”或“...是一个目录。”?

例如

docker run -it \
    -v $(PWD)/config:/tmp/buildroot/.config \
    rootbuilder \
    make menuconfig

make menuconfig尝试保存.config文件时,它实际在做的事情是:

  1. 将其存储在临时文件中
  2. 删除现有.config文件(取消链接)
  3. 将临时文件移至适当位置(移动)

因为在 docker 中挂载文件使用的是 tmpfs 挂载,所以取消链接或移动它就像尝试在挂载上执行该操作一样 - 这是没有意义的。

为了解决这个问题,我可以:

  • 将目录挂载为卷但这意味着必须将应用程序的其余部分存储在卷中,因此每次它都不会是一个干净的环境;或者
  • 将配置放入子目录中并让应用程序在那里找到配置——这很混乱;或者
  • 将配置复制到位在运行应用程序之前,然后将结果传回原始文件 - 但这还意味着检测该文件是否存在,并且随着涉及的文件越多,这个过程会变得越来越复杂

有没有更好的方法来解决通过docker卷挂载时需要移动/删除单个文件的问题?

答案1

内核构建系统是否足够智能,能够跟踪符号链接?有些程序可以,有些则不行,但我很确定这是你唯一的希望——将所有文件放入容器中其他位置安装的目录卷中,然后符号链接到该.config卷中的文件。

相关内容