我已经做了一个实验来验证这一点。以下是我的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
我的问题是:
谢谢!
答案 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