小编典典

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

all

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


阅读 133

收藏
2022-06-10

共1个答案

小编典典

对于 v17.09.0-ce 和更新版本

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

例如

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 参考说:

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


历史 此功能
已通过多个GitHub问题进行跟踪6119、9943、13600、27303、28499、问题30110

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

2022-06-10