适用于 v17.09.0-ce 及更高版本
使用可选标志--chown=<user>:<group>
与任一ADD
or COPY
命令。
例如
COPY --chown=<user>:<group> <hostPath> <containerPath>
--chown 标志的文档现在已在主网上发布Dockerfile 参考页面 https://docs.docker.com/engine/reference/builder/#copy.
Issue 34263 https://github.com/moby/moby/pull/34263已合并并可用于发布 v17.09.0-ce https://github.com/docker/docker-ce/releases/tag/v17.09.0-ce.
对于 v17.09.0-ce 之前的版本
Docker 不支持COPY
作为 root 以外的用户。你需要chown
/ chmod
文件after the 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 之前的版本,Dockerfile 参考COPY
命令说:
所有新文件和目录均使用 UID 和 GID 0 创建。
History该功能已通过多个 GitHub 问题进行跟踪:6119 https://github.com/moby/moby/issues/6119, 9943 https://github.com/moby/moby/pull/9934, 13600 https://github.com/moby/moby/pull/13600, 27303 https://github.com/moby/moby/pull/27303, 28499 https://github.com/moby/moby/pull/28499, 问题 30110 https://github.com/moby/moby/issues/30110.
问题 34263 https://github.com/moby/moby/pull/34263是实现可选标志功能的问题,并且第467期 https://github.com/docker/cli/pull/467更新了文档。