在构建 Docker 镜像时,如何将文件COPY
到镜像中,以使生成的文件归 root 以外的用户所有?
最佳答案
适用于 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 引用命令说:
All new files and directories are created with a UID and GID of 0.
历史 此功能已通过多个 GitHub 问题进行跟踪:6119 , 9943 , 13600 , 27303 , 28499 , Issue 30110 .
Issue 34263是实现可选标志功能和 Issue 467 的问题更新了文档。
关于docker - 我如何 Docker COPY 作为非 root 用户?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44766665/