我在尝试在 dockerfile 中使用 COPY 命令时遇到了困难。使用 --privileged 构建时,这不是问题,但从安全角度来看,该开关不可行。这是正在发生的事情:
- 列出主机上的文件 -> 它们都显示为 user123
- 在容器中显示用户名和uid/gid -> 都对应user123
- 在容器内发布一个COPY
- 列出容器内的文件 -> 它们都显示为 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/