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

kik*_*_yu 4 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 
Run Code Online (Sandbox Code Playgroud)

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

user@39370ee77a16:/$ cat a.out
hello
user@39370ee77a16:/$ cat b.out
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. root是默认用户吗?
  2. 为什么 Dockerfile 中的 $UID 没有显示任何内容?

谢谢!

Adi*_*iii 5

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

FROM ubuntu:bionic 
RUN whoami
Run Code Online (Sandbox Code Playgroud)

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

RUN echo $UID >> a.out && echo "hello" >> a.out   
Run Code Online (Sandbox Code Playgroud)

您可以使用更改用户

USER my_user
Run Code Online (Sandbox Code Playgroud)