Jenkins 如何更改docker卷中的权限?

Jenkins 如何更改docker卷中的权限?,jenkins,docker,Jenkins,Docker,我想扩展Jenkins的官方形象,并在/var/Jenkins_home中实现我的mercurial回购,这就是我在没有docker的情况下在Jenkins上对配置进行源代码控制的方式。但当我这样做的时候: USER root ADD src/hgrc /var/jenkins_home/.hg/hgrc RUN chown jenkins:jenkins /var/jenkins_home/.hg/hgrc 它将hgrc保持为501:dialout,这似乎与以下事实有关:/var/jenki

我想扩展Jenkins的官方形象,并在
/var/Jenkins_home
中实现我的mercurial回购,这就是我在没有docker的情况下在Jenkins上对配置进行源代码控制的方式。但当我这样做的时候:

USER root
ADD src/hgrc /var/jenkins_home/.hg/hgrc
RUN chown jenkins:jenkins /var/jenkins_home/.hg/hgrc
它将hgrc保持为501:dialout,这似乎与以下事实有关:
/var/jenkins\u home
是jenkins图像中的一个卷

或者即使我只是这样做:

USER jenkins
WORKDIR /var/jenkins_home
RUN hg init
文件夹
/var/jenkins\u home/.hg
不像通常那样创建。在第一个示例中,如果一个
.hg
不存在,但它属于root用户,则会创建它


那么,在上游映像创建的卷中放置文件的“正确”方法是什么呢?

此处提供的详细信息不足以理解问题所在。但从要点来看,我可以理解你的问题。它主要与已装入卷的文件权限相关问题有关

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

要克服此问题,您可能有两种选择:

  • 如果可以更改用于装载的父文件夹的文件权限。然后,更新用于装载的父文件夹,使uid和gid与docker容器中jenkins用户的uid和gid相同

  • 如果您可以控制docker映像生成脚本,但无权更改要装载的父文件夹的uid和gid,则需要遵循此方法。将关键用户(docker容器中运行demon进程的用户,在您的情况下,可能是jenkins用户)的uid和gid与父文件夹的uid和gid同步

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

    您可以参考我面临的类似问题,并按照以下方式解决: