以 root 用户还是非 root 用户身份执行“docker-compose up”?

以 root 用户还是非 root 用户身份执行“docker-compose up”?

阅读了一些文章后,我仍然不确定应该使用哪个用户来运行 docker 容器。以 root 用户身份运行 docker 容器时是否存在任何安全问题?以 root 用户身份运行 docker 容器可以吗?或者我应该使用我的普通用户,将他添加到“docker”组,然后运行我的容器,或者我应该创建一个额外的用户仅用于管理/创建 docker 容器?

root@myDockerHost:/opt/myDockerContainer# docker-compose up -d

对比

chris@myDockerHost:/opt/myDockerContainer# docker-compose up -d

对比

dockerusr@myDockerHost:/opt/myDockerContainer# docker-compose up -d

(我说的是我的 docker 主机上的用户——而不是容器内的用户!)

答案1

欢呼!

我支持始终以普通用户身份运行容器。

在生产系统中,您的容器不会以 root 身份运行。即使在非生产系统中,运行容器的用户也可能不允许以 root 身份运行程序。

因此,我希望让它们作为非特权用户正常工作,即使这很困难。

此外,还有安全方面的考虑。专业系统管理员遵循的一般规则是,除非真的必须,否则绝不以 root 身份运行程序。一旦程序以 root 身份运行,它就完全控制了计算机,可以对计算机执行任何命令。无论是作者想要的好事,还是一个不务正业的人通过作者没有想到要关闭的漏洞侵入作者的程序而做的坏事。

因为我们最终认识到我们确实无法预测哪些程序存在缺陷,所以我们不会再冒险了。

谢谢!Mike

答案2

这没什么区别。该docker-compose命令连接到 docker.sock(即 docker 的 API),以运行所有容器命令。默认情况下,此 API 仅对 Linux 上的 root 用户开放,因此您经常会看到人们使用 sudo 运行命令。

您可以配置 docker 以允许非 root 用户访问此 API,只需确保您信任这些用户在您的主机上具有 root 访问权限,因为该 API 提供了该级别的访问权限。请参阅这个答案有关如何授予用户此访问权限的详细信息。dockerd 守护程序通常配置为以 root 身份运行,因此访问此 API 的用户几乎没有区别(目前有无 rootless 模式,处于实验阶段)。

重要的细节是以非 root 用户身份在容器内运行应用程序。这相当于 systemd 以 root 身份运行并以非 root 用户身份启动程序。您可以在 Dockerfile、docker-compose.yml 或 CLI 中配置此用户docker run -u

我之所以说“差别不大”,是因为 Compose 文件可以配置具有相对路径的主机挂载。如果您docker-compose以 root 或其他用户身份运行命令,则这些主机挂载可能位于不同的路径,并且文件可能归不同的 UID 所有,这些 UID 可能会或可能不会映射到容器内应用程序的 UID。除此之外,我想不出以docker-compose用户或 root 身份运行有什么区别。

答案3

除了@BMitch的回答。

Docker 守护进程绑定到 Unix 套接字而不是 TCP 端口。默认情况下,Unix 套接字由用户 root 拥有,其他用户只能使用 sudo 访问它Docker daemon always runs as the root user

如果您不想在 docker 命令前面加上 sudo,请创建一个Unix group名称docker并向其中添加用户。当 Docker 守护进程启动时,它会创建一个可供 docker 组成员访问的 Unix 套接字。

docker组授予与root用户相同的权限......

sudo groupadd docker;
sudo usermod -aG docker "$USER";

来源:https://docs.docker.com/engine/install/linux-postinstall[修改的]


有关的:
https://docs.docker.com/engine/security/#docker-daemon-attack-surfaceDocker Daemon 攻击面...)
https://docs.docker.com/engine/security/rootless以非 root 用户身份运行 Docker 守护程序(Rootless 模式)...)

相关内容