一千萬個為什麽

搜索

更改Docker容器內創建的文件的所有者,而不更改Dockerfile



當我使用 docker-compose運行web touch test 在容器內創建文件時,該文件擁有 root:root 。我想將其更改為 $ USER 而不使用 chown

我知道 - user 選項,但它需要在 Dockerfile 上創建用戶。我更喜歡不更改 Dockerfile ,因為它是在git repo上提交的,我不想提交它,因為它是一種個人配置。

我嘗試掛載文件/etc/passwd ,但是當我們運行命令時用戶不在場。我可以使用 su $ USER -c“...”,但這有一些問題。

那麽,在將所有者設置為主機用戶的情況下設置創建新文件的最佳方法是什麽?

轉載註明原文: 更改Docker容器內創建的文件的所有者,而不更改Dockerfile

一共有 1 個回答:

無需更改Dockerfile。只需定義某個用戶,例如jenkins和某個uid,例如 1000 並確保在安裝文件夾時使用相同的uid。

ARG user=jenkins
ARG uid=1000

# Jenkins is run with user `jenkins`, uid = 1000
# If you bind mount a volume from the host or a data container,
# ensure you use the same uid
RUN mkdir -p $JENKINS_HOME \
    && chown ${uid}:${gid} $JENKINS_HOME \
    && addgroup -g ${gid} ${group} \
&& adduser -h "$JENKINS_HOME" -u ${uid} -G ${group} -s /bin/bash -D ${user}

RUN chown -R ${user} "$JENKINS_HOME" /usr/share/jenkins/ref

https://github.com/jenkinsci/docker/blob/master/Dockerfile-高山