Run docker as root verus non-root
对于"以非root用户和root用户身份运行docker"感到困惑。
第一个问题(以非root用户身份运行):基于Linux的安装后步骤,要以非root用户身份运行docker,我们创建docker组并将用户添加到其中。但该文章声称" docker组授予的权限等同于root用户"。因此,如果我正确理解了这句话,我们不会以root身份运行docker,而是以拥有root权限的用户身份(在docker组中)运行它?
第二个问题(以root用户身份运行):假设我遵循上述步骤(创建docker组并将用户添加到其中)。但是我在Dockerfile中指定了" USER root"(下面的示例)。当我运行此容器时,无论上面的设置如何,它都将以root身份运行,对吗?
1 2 3 | FROM debian:stretch USER root CMD["echo","hello"] |
The docker group grants privileges equivalent to the root user
默认为是。对于任何可以在机器上运行docker容器的用户来说都是如此。
原因是默认情况下,当您以root用户身份在容器内运行时,这将映射到主机上的root用户。
因此,您可以将主机上的某些敏感文件夹绑定到容器上,并在这些装载上执行特权操作,因为容器内的用户是root(pid 0)。
为此的解决方案是启用用户命名空间,该用户命名空间基本上会将容器内的root用户映射到计算机上的非root用户。
Second question (run as root user): assume I followed the steps above (create docker group and add user to it). Yet I specify"USER root" in a Dockerfile (example below).
When I run this container, it will run as root regardless of the setting above, correct?
这里有几点:
-
默认情况下,
USER root 是默认值,因此您不必指定它。 (除非基本映像明确设置了除root以外的用户) -
从主机的angular来看,docker容器只是一个正常过程。每个进程都有一个所有者。该所有者是主机
执行docker run 命令的用户。USER root 指令与此所有者无关。 USER指令仅指定容器内的用户
将在与容器所有者不同的容器内部启动该过程。
好,这里有两个不同的主题:
您的第一个问题是指本地linux用户访问docker套接字的权限(即执行
但是第二个问题涉及容器内的用户。它与上述docker组无关,也与您用于运行docker命令的用户无关。
您可以选择任何用户在Dockerfile中使用