Dockerfile中指令的默认用户是什么?

Dockerfile中指令的默认用户是什么?,docker,Docker,我做了一个实验来验证这一点。以下是我的Dockerfile: FROM ubuntu:bionic RUN echo $UID > a.out && echo "hello" > a.out RUN useradd -m user RUN echo $UID > b.out USER user a.out和b.o

我做了一个实验来验证这一点。以下是我的Dockerfile:

FROM ubuntu:bionic                                

RUN echo $UID > a.out && echo "hello" > a.out     
RUN useradd -m user      
RUN echo $UID > b.out                             

USER user 
a.out和b.out的结果如下所示

user@39370ee77a16:/$ cat a.out
hello
user@39370ee77a16:/$ cat b.out
我的问题是:

  • root是默认用户吗
  • 为什么Dockerfile中的$UID不显示任何内容

  • 谢谢

    它取决于基本映像,但在您的情况下,默认用户是root。您可以从Dockerfile或内部进行验证

    FROM ubuntu:bionic 
    RUN whoami
    
    在本例中,您会看到
    hello
    ,因为您覆盖了内容,请尝试

    RUN echo $UID >> a.out && echo "hello" >> a.out   
    
    您可以使用

    USER my_user
    

    在其他答案(到目前为止)中没有完全解决的是您的第二个问题:

    为什么Dockerfile中的$UID不显示任何内容

    $UID
    是一个bash内部变量。从dockerfile创建映像时,不使用bash,因此未定义
    $UID
    ,因此使用它将返回空字符串

    要使此答案完整(即使已回答):

    root是默认用户吗


    这取决于
    FROM
    语句中图像的设置方式。

    谢谢!我是新来的码头工人。你能告诉我$UID是什么时候定义的吗?一旦使用bash?是的。它是bash中的一个内部变量,它在bash启动时就设置好了。