docker - dockerfile 中的 COPY 从预期用户更改为 root 用户

标签 docker

我在尝试在 dockerfile 中使用 COPY 命令时遇到了困难。使用 --privileged 构建时,这不是问题,但从安全角度来看,该开关不可行。这是正在发生的事情:

  1. 列出主机上的文件 -> 它们都显示为 user123
  2. 在容器中显示用户名和uid/gid -> 都对应user123
  3. 在容器内发布一个COPY
  4. 列出容器内的文件 -> 它们都显示为 root

对于上面的最后一项,我希望文件显示为 user123。

我已经尝试/确认了以下内容:

  • 使用 groupadd/useradd/USER 在 dockerfile 中创建和设置 userid/groupid
  • 按名称在 docker 文件中设置 USER
  • 通过 id 在 docker 文件中设置 USER
  • 通过 ARGS 将主机的 uid/gid 传入 dockerfile
  • 复制后的文件 -> 访问被拒绝
  • 确认主机用户是docker组的成员

我还在 dockerfile 中尝试了 COPY --chown,但该选项不可用,因为 docker 服务器版本停留在石器时代 (1.13)。

很明显,这是在 docker 构建期间发生的。

最佳答案

如果您不能使用COPY --chown,为什么不在复制后RUN chown?

RUN chown -R 123:123 file

还有为什么要在服务器上构建镜像?您可以在其他地方构建它,那里有更新的 Docker 版本可用。然后通过存储库或通过导出/导入将图像传送到服务器。

关于docker - dockerfile 中的 COPY 从预期用户更改为 root 用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65925178/

相关文章:

没有卷运行的docker,容器系统文件存储在哪里?

docker build 命令占用了所有空间

mysql - 如何等待导入sql文件?

linux - docker-compose.yml 在以点 (.) 开头的文档上使用卷

java - 使用 Docker 进行 Spring 启动安全配置

docker - psql : could not translate host name "somePostgres" to address: Name or service not known

docker - docker-compose 的两个 `command` 形式的行为是否不同?

node.js - 获取https://gcp.io/v2/:x509:未知授权机构签名的证书

ubuntu - 充当代理的 Nginx 容器

linux - Docker - 在多层应用程序中移动到新主机时需要传输哪些图像?