我正在寻找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/