在构建Docker镜像时,如何将COPY
文件放入图像中,以便生成的文件归root用户所有?
答案 0 :(得分:106)
适用于版本v17.09.0-ce和更新版本
将可选标记--chown=<user>:<group>
与ADD
或COPY
命令一起使用。
例如
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问题进行跟踪:6119,9943,13600,27303,28499,Issue 30110。
Issue 34263是实施可选标记功能的问题,Issue 467更新了文档。