Dockerfile中指令的默认用户是什么?
我做了一个实验来验证这一点。以下是我的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
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或内部进行验证
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启动时就设置好了。