一尘不染

如何以非root用户身份使用Docker COPY?

docker

在构建Docker映像时,如何COPY将文件添加到映像中,以便生成的文件由root以外的用户拥有?


阅读 274

收藏
2020-06-17

共1个答案

一尘不染

对于v17.09.0-ce及更高版本

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

例如

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

--chown标志的文档现在位于Dockerfile参考主页面上

版本
34263
已被合并,可以在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上的问题跟踪:61199943136002730328499发行30110

问题34263是实现了可选标志功能的问题,问题467更新了文档。

2020-06-17