我正在寻找Github上某人创建的Dockerfile
而且我注意到,每次在Docker文件中定义RUN时,都会在其前面加上USER username指令。

它是强制性的吗?还是设置了层叠样式?

USER root
RUN commandA
USER www
RUN commandB
....
RUN commandC

哪个用户将执行commandC?最新声明的(www)?
或者还有别的东西(某些其他Docker命令可以将其更改为default,显然是USER除外)也许执行后的RUN本身会重置用户?

还是只是更加冗长?

最佳答案

没必要,没有。为Dockerfile提供USER始终是一种好习惯,以避免将所有内容都以root的形式运行,但是有时构建需要前后翻转。那是您可能会看到的地方:

...
USER alice
RUN ... // do stuff
USER root
RUN ... // do super privileged stuff
USER alice
CMD ... // run my app as non-privileged user
...

如果您不需要前后翻转,则单个USER指令将向下层叠到其下面的所有指令。
...
USER alice
RUN ... // as alice
WORKDIR ...
RUN ... // as alice
ENV ...
RUN ... // as alice
CMD ... // as alice
...

关于docker - Dockerfile:执行RUN之前是否需要指定哪个用户?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43470243/

10-16 21:32