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

时间:2019-11-11 07:50:27

标签: docker

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

isValid = checklength(name);
isValid = Boolean.logicalOr(isValid, checkCase(name));
...
isValid = Boolean.logicalOr(isValid, checkStart(name));

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

FROM ubuntu:bionic                                

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

USER user 

我的问题是:

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

谢谢!

2 个答案:

答案 0 :(得分:2)

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

  

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

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

要使此回答完整,即使已经回答过:

  

root是默认用户吗?

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

答案 1 :(得分:0)

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

FROM ubuntu:bionic 
RUN whoami

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

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

您可以使用更改用户

USER my_user