我如何将Docker COPY作为非root用户?

时间:2017-06-26 18:48:34

标签: docker dockerfile

在构建Docker镜像时,如何将COPY文件放入图像中,以便生成的文件归root用户所有?

1 个答案:

答案 0 :(得分:106)

适用于版本v17.09.0-ce和更新版本

将可选标记--chown=<user>:<group>ADDCOPY命令一起使用。

例如

COPY --chown=<user>:<group> <hostPath> <containerPath>

--chown标志的文档现在位于主Dockerfile Reference page上。

问题34263已合并,可在release v17.09.0-ce中找到。

适用于早于v17.09.0-ce的版本

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

示例Dockerfile:

from centos:6
RUN groupadd -r myuser && 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"]

在v17.09.0-ce之前,COPY命令的Dockerfile参考说:

  

使用UID和GID为0创建所有新文件和目录。

<强>记录 此功能已通过多个GitHub问题进行跟踪:61199943136002730328499Issue 30110

Issue 34263是实施可选标记功能的问题,Issue 467更新了文档。