我如何作为非root的docker复制?

在构buildDocker镜像时,如何将文件COPY到镜像中,以便生成的文件由除root以外的用户拥有?

更新 – 将新标志添加到ADD和COPY命令

问题34263已经合并,并在发布v17.09.0-ce中可用。

解决这个问题的方法是在ADDCOPY命令中添加--chown=<user>:<group>作为可选标志。

文档仍在编制中,但可以在这里find初步的文档。


作为除root以外的用户,Docker目前不支持COPY 。 您需要在COPY命令之后chown / chmod文件。

示例Dockerfile:

 from centos:6 RUN groupadd -r slcs && adduser -r -g myuser myuser USER myuser #Install code, configure application, etc... USER root COPY run-my-app.sh /usr/local/bin/run-my-app.sh RUN chown myuser:myuser /usr/local/bin/run-my-app.sh && \ chmod 744 /usr/local/bin/run-my-app.sh USER myuser ENTRYPOINT ["/usr/local/bin/run-my-app.sh"] 

我一直试图通过多个GitHub问题来进行讨论: 6119,9943,13600,27303,28499

在这篇文章发行时,30110号似乎是最新的,没有解决scheme。 因此,看起来用普通的docker命令做这件事情还是不可能的。

另外, COPY命令的Dockerfile Reference仍然会这样说

所有新的文件和目录都是使用UID和GID创build的。