如何更改Docker卷中的权限?

我想扩展Jenkins的官方映像,并将我的mercurial repo /var/jenkins_home/var/jenkins_home ,这就是我如何在没有/var/jenkins_home情况下在Jenkins上控制我的configuration。 但是当我这样做:

USER root ADD src/hgrc /var/jenkins_home/.hg/hgrc RUN chown jenkins:jenkins /var/jenkins_home/.hg/hgrc

它将hgrc保存为501:dialout,这似乎与/var/jenkins_home是jenkins映像中的卷有关。

或者即使我只是这样做:

USER jenkins WORKDIR /var/jenkins_home RUN hg init

文件夹/var/jenkins_home/.hg不会像通常那样创build。 在第一个例子中,一个.hg被创build,如果它不存在,但它是由root拥有的。

那么在上游图像创build的卷中,什么是“正确”的方式?

这里提供的细节不足以理解这个问题。 但看着这个要点,我可以把你的问题联系起来。 这主要与装入卷的文件权限相关的问题有关。

装入的卷将根据原始基本文件夹UID和GID接收凭据。 同样的uid和gid会被传播到容器中。

要解决这个问题,你可能有两个select:

  1. 如果您可以更改用于安装的父文件夹的文件权限。 然后,更新用于安装的父文件夹,使其具有与docker容器中的jenkins用户的uid和gid相同的uid和gid。

  2. 如果您有对泊坞窗图像生成脚本的控制权,并且无​​权更改正在装载的父文件夹的uid和gid,则需要遵循此方法。 将关键用户(在Docker容器中运行恶魔进程的用户,在您的情况下,它可能是jenkins用户)的uid,gid与父文件夹的uid和gid同步。

最简单的方法是遵循第一种方法。

你可以参考我遇到的类似问题,并按照以下解决: nfs卷挂载到mysql的docker容器里面的一个ubuntu virtualbox失败