将dockerfile更改从预期用户复制到根用户

将dockerfile更改从预期用户复制到根用户,docker,Docker,我在dockerfile中尝试使用COPY命令时遇到了麻烦。当使用--privileged构建时,这不是问题,但从安全角度来看,这种切换是不可行的。下面是正在发生的事情: 列出主机上的文件->它们都显示为user123 在容器中显示用户名和uid/gid->它们都对应于user123 在容器内发出一份副本 列出容器中的文件->它们都显示为根目录 对于上面的最后一项,我希望文件显示为user123 我已经尝试/确认了以下内容: 使用groupadd/useradd/USER在dockerfile

我在dockerfile中尝试使用COPY命令时遇到了麻烦。当使用--privileged构建时,这不是问题,但从安全角度来看,这种切换是不可行的。下面是正在发生的事情:

  • 列出主机上的文件->它们都显示为user123
  • 在容器中显示用户名和uid/gid->它们都对应于user123
  • 在容器内发出一份副本
  • 列出容器中的文件->它们都显示为根目录
  • 对于上面的最后一项,我希望文件显示为user123

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

    • 使用groupadd/useradd/USER在dockerfile中创建并设置userid/groupid
    • 按名称设置docker文件中的用户
    • 按id设置docker文件中的用户
    • 通过ARGS将uid/gid从主机传递到dockerfile
    • 在复制->访问被拒绝后删除文件
    • 已确认的主机用户是docker组的成员
    我还尝试过在dockerfile中复制--chown,但该选项不可用,因为docker服务器版本在石器时代(1.13)中被卡住了


    显而易见,这是在docker构建期间发生的。

    如果不能使用
    COPY--chown
    为什么不
    在复制之后运行
    chown

    RUN chown -R 123:123 file
    

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

    我已尝试运行chown。。。访问被拒绝。我会把它添加到原始信息中。它必须在服务器上运行,因为由于产品的高安全性需要,必须在受控环境中创建用于生产的位。@GaTechThomas首先运行chown,然后更改
    用户
    chown
    只能由root用户使用。我现在就尝试一下。成功了!至少在建造上。现在,运行将拒绝对所有已发送给user123的文件的权限。回到它…@GaTechThomas您在周之后是否已将
    USER
    更改回“user123”?如果有,则将使用的run命令和Dockerfile添加到问题中。