我做了一个实验来验证这一点。以下是我的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什么都不显示
谢谢!
到目前为止,其他答案中还没有完全解决的是您的第二个问题:
为什么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