非root用户如何安装Docker?

24

我正在使用 CentOS 6.9 高性能计算平台系统,希望使用非 root 用户的 Docker。有没有一种方法可以从源代码编译 Docker,而无需 root 权限?


1
Docker 没有 root 权限就无法正常工作。或许可以在一个包含 root 用户的虚拟机中进行构建? - Matt
我建议使用Singularity(https://sylabs.io/singularity/)。容器需要使用root构建,但可以在没有root权限的情况下运行。对于任何技术都要小心:CentOS 6具有旧版本的C库和ld加载器。因此,任何需要libc> 2.12的内容都需要更多的工作(或重新编译)才能运行。 - Robert Lugg
2个回答

47

这不应该是可能的,因为这将是一个重大的安全隐患。

当在一台机器上安装了Docker后,具有docker访问权限(不一定是root用户)的用户可以启动容器。特别是,他们可以在特权模式下启动容器,从而使容器可以访问所有主机设备。

更重要的是,拥有docker访问权限的用户可以挂载机器根用户独占的目录。由于在容器中默认情况下,内部的root用户将能够访问容器内已挂载的专属于机器根用户的目录,因此任何由非root用户启动的Docker容器都将允许访问关键的机器内容。

因此,不应该允许非root用户安装Docker并启动容器,因为这会危及整个机器。

请查看docker维护者之一的明确评论


2
讲解得很清楚!我希望我能够给更多的赞 :-) - vivekyad4v
谢谢。我会尝试其他方法,而不是使用Docker。 - Shixiang Wang
1
为什么不能将拒绝非 root 用户的访问也应用到容器中的进程中呢?我认为这更多是一种实现问题,而不是漏洞。 - Varun Garg
@VarunGarg 安装Docker后的默认行为是容器内的用户ID映射到主机上的相同ID。因此,默认情况下,容器内UID为0(root)的用户映射到主机上的root。为了解决这个问题,Docker引入了用户命名空间(https://docs.docker.com/engine/security/userns-remap/),将容器UID映射到主机上不同的范围,从而避免了相关漏洞。然而,安装Docker仍然需要特权访问。 - yamenk

4

谢谢更新!我认为更好的回答是总结你的发现,并解释它在问题(和被接受的答案)的背景下提供了什么。 - wellplayed
4
安装“无根”Docker需要root权限吗? - MeadowMuffins

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接