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

标签 docker dockerfile

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

最佳答案

适用于 v17.09.0-ce 及更新版本

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

例如

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/

相关文章:

docker - 0.0.0.0拒绝连接

docker - 如何在 dockerfile 中回答安装问题?

docker - 如何在docker文件中运行 `git clone`?

docker - docker build在 “permission denied”上失败并显示 `nginx -t`

python - 从 docker 容器中隐藏节点核心数

docker - 容器停止后Docker Compose保持网络正常运行

ruby-on-rails - 从 Docker 登录

python - Apache SuperSet 中的 Oauth 身份验证

docker - 如何逐层调试docker pull?

linux - 找不到 docker-entrypoint exec nginx