因为你已经是root用户,所以在Dockfile中运行USER root是多余的吗?

时间:2017-04-30 10:31:07

标签: docker dockerfile

看着this Dockerfile明星:

FROM sequenceiq/pam:centos-6.5
MAINTAINER SequenceIQ

USER root

现在看起来多余,因为默认情况下你已经root了。但是出于争论的缘故 - 让我们看看parent Dockerfile ......并没有改变用户。

现在让我们看看祖父母的Dockerfile。 (它似乎不可用)。

我的问题是:在Dockfile中运行USER root是多余的,因为你已经是root用户了吗?

3 个答案:

答案 0 :(得分:11)

是的,它是多余的,但是将这种冗余留下来几乎没有任何缺点。这可能是针对其他图像进行开发,或支持可能交换基本图像的用途。如果上游图像改变了它的行为,可以做到防止将来出现问题。或者他们可能只是想要明确,所以很明显这个容器需要以root身份运行命令。

答案 1 :(得分:4)

如果图像是从将根用户更改为用户的源生成的,则您可能无权访问其中的所有资源。但是,如果您加载图像:

从xxxxxx / xxxxxx:最新
 USER根

这将使您可以根目录访问图像资源。在拒绝访问不是我的现有映像中的更改/etc/apt/sources.list之后,我只是使用了它。工作正常,让我更改了sources.list

答案 2 :(得分:2)

它实际上取决于图像。在某些图像中,例如grafana/grafana,默认用户不是root用户,也没有sudo。因此,您必须将USER root用于任何特权任务(例如,通过apt更新和安装应用)。