【问题标题】:How to change ownership/permissions to folder inside VOLUME in Dockerfile created from another image?如何更改从另一个图像创建的 Dockerfile 中 VOLUME 内文件夹的所有权/权限?
【发布时间】:2021-05-26 23:18:34
【问题描述】:

我有一个 Dockerfile:

FROM jenkins/jenkins:lts-centos

USER jenkins
ENV PLUGIN_DIR=$JENKINS_HOME/plugins
RUN mkdir $JENKINS_HOME/plugins

RUN ls -aliF $JENKINS_HOME/

这导致没有文件夹 plugins 存在。

使用 root 用户时的结果相同。

解决方法是使用 WORKDIR:

FROM jenkins/jenkins:lts-centos

USER jenkins
WORKDIR $JENKINS_HOME/plugins
RUN chown jenkins:jenkins $JENKINS_HOME/plugins

RUN ls -aliF $JENKINS_HOME/

但它会导致 plugins 文件夹属于 root

35539281 drwxr-xr-x 2 root root 6 月 26 日 21:45 插件/

与用户 root 相同:

FROM jenkins/jenkins:lts-centos

USER root
WORKDIR $JENKINS_HOME/plugins
RUN chown jenkins:jenkins $JENKINS_HOME/plugins

RUN ls -aliF $JENKINS_HOME/

35539493 drwxr-xr-x 2 root root 6 May 26 21:52 plugins/

jenkins/jenkins:lts-centos 使用 $JENKINS_HOME 作为 VOLUME。

这会以某种方式阻止创建具有自定义所有权或权限的文件夹。

关于如何解决这个问题的任何想法?

【问题讨论】:

    标签: docker jenkins dockerfile


    【解决方案1】:

    找到解决方法:

    创建一个文件夹jenkins/plugins并复制到镜像中:

    FROM jenkins/jenkins:lts-centos
    
    USER root
    COPY --chown=jenkins:jenkins jenkins/ $JENKINS_HOME/
    
    RUN ls -aliF $JENKINS_HOME/
    

    它导致 jenkins 所有权:

    2367864 drwxr-xr-x 2 jenkins jenkins 5 月 27 日 09:14 插件/

    由于这是一种解决方法,所以问题仍然存在 - 如何以正确的方式做到这一点?

    【讨论】:

      猜你喜欢
      • 2020-09-23
      • 2019-09-26
      • 2019-10-22
      • 2014-01-04
      • 2013-10-30
      • 2016-02-29
      • 2016-06-09
      • 2012-04-03
      • 1970-01-01
      相关资源
      最近更新 更多