【问题标题】:non-root user how to install docker?非root用户如何安装docker?
【发布时间】:2018-07-06 12:09:32
【问题描述】:

我正在使用 CentOS 6.9 系统的高性能计算平台,我想在非 root 用户中使用 docker。有没有一种方法可以让我从源代码构建 docker 并且不需要 root 权限?

【问题讨论】:

  • Docker 在没有 root 的情况下无法真正工作。也许在包含 root 用户的 VM 中构建?
  • 我建议奇点 (sylabs.io/singularity)。容器需要使用 root 构建,但没有它也可以运行。小心任何技术:CentOS 6 有旧版本的 C 库和 ld 加载器。所以任何需要 libc > 2.12 的东西都不会在没有更多工作(或重新编译)的情况下运行

标签: docker centos


【解决方案1】:

这应该是不可能的,因为这将是一个主要的安全问题。

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

更重要的是,拥有 docker 访问权限的用户可以挂载机器 root 专有的目录。由于默认情况下,容器内的 root 用户将有权访问容器内挂载的 root 拥有的目录,这将允许由非 root 用户启动的任何 Docker 容器访问关键的机器内容。

因此,不应该允许非 root 用户安装 Docker 和启动容器的顺序,因为它可能会危及整个机器。

从一位 docker 维护者那里检查这个明确的comment

【讨论】:

  • 很好解释!我希望我能给予更多的支持:-)
  • 谢谢。我会尝试其他方法而不是使用 docker。
  • 为什么容器中的进程不能拒绝非root用户的访问?我觉得这更像是一个实施问题,而不是一个漏洞。
  • @VarunGarg 安装 Docker 后的默认行为是容器内的 us 的 uid 映射到主机上的相同 uid。因此,默认情况下,容器内具有 uid 0 (root) 的用户映射到主机上的 root。为了解决这个问题,Docker 引入了用户命名空间(docs.docker.com/engine/security/userns-remap),将容器 uid 映射到主机上的不同范围,从而避免了提及漏洞。但是,仍然安装 Docker 需要特权访问。
【解决方案2】:

更新 yamenk 的回答:
Docker 现在有了官方的无根模式:Run the Docker daemon as a non-root user
以下是一位 Docker 工程师对其工作原理的解释: Experimenting with Rootless Docker

【讨论】:

  • 感谢您的更新!我认为一个更好的答案是总结您的发现并准确解释它在问题的上下文中提供的内容(和接受的答案)。
  • 我们需要root来安装'rootless' docker吗?
猜你喜欢
  • 2011-05-01
  • 2017-07-14
  • 2019-12-21
  • 1970-01-01
  • 2012-09-05
  • 2016-10-18
  • 2017-07-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多