【问题标题】:Switch USER for single RUN command in Dockerfile在 Dockerfile 中为单个 RUN 命令切换 USER
【发布时间】:2023-02-07 03:50:40
【问题描述】:

目前我面临以下挑战: 我正在扩展一个基本图像,它在末尾设置了一个USER“safeuser”。在我的依赖图像中,我尝试对基本图像的文件系统进行一些更改,但由于“safeuser”无法从“root”修改文件,我需要通过USER ROOT进行更改,进行更改,然后返回@ 987654323@。

这种方法看起来确实很丑陋,例如,如果基本图像将用户名从“safuser”更改为“othername”怎么办?有什么办法可以只在构建过程中更改 USER,或者以不同的用户身份更改 RUN 单个命令,而不必显式切换回原始用户?或者我至少可以在构建过程中以某种方式存储对原始 USER 的一些引用吗?

【问题讨论】:

    标签: docker dockerfile


    【解决方案1】:

    这可以使用sudo --user来完成:

    root@machine:/home/user# whoami
    root
    root@machine:/home/user# sudo --user=user whoami
    user
    root@machine:/home/user# whoami
    root
    

    Dockerfile 中使用时,它将如下所示:

    # ...
    
    RUN sudo --user=user mkdir /tmp/dir
    RUN touch /tmp/dir/root_file
    

    【讨论】:

    • 这仍然存在使 OP 不喜欢多次 USER 调用的相同问题
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-18
    • 1970-01-01
    • 2018-10-13
    • 2019-10-19
    相关资源
    最近更新 更多