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



我做了一个实验来验证这一点。以下是我的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

我的问题是:

  1. root是默认用户吗
  2. 为什么Dockerfile中的$UID什么都不显示

谢谢!

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

为什么Dockerfile中的$UID什么都不显示?

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

要使这个答案完整,即使它已经被回答:

root是默认用户吗?

这取决于FROM语句中的映像是如何设置的。

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

FROM ubuntu:bionic 
RUN whoami

在您的情况下,您会看到hello,因为您覆盖了内容,请尝试使用

RUN echo $UID >> a.out && echo "hello" >> a.out   

您可以使用更改用户

USER my_user

最新更新