【问题标题】:Running OCI Containers as regular users以普通用户身份运行 OCI 容器
【发布时间】:2019-07-13 05:29:03
【问题描述】:

对于许多开发工具,我发现将它们安装在容器中并在其中进行构建和测试很有用。使用一些包装脚本来组装快速增长的命令行,即使在其中运行 IDE 之类的 GUI(X-windows)应用程序也不难。

但是,授予用户对系统 docker daemon 实例的访问权限有效地为他们提供了 root 权限,因为他们可以以 root 身份运行容器并在其中挂载主机文件系统的任何部分。在开发人员机器上通常不是问题,因为主要用户已经拥有完整的 sudo 权限,但在某些共享机器上可能是。

现在runc,docker 下实际创建容器的工具,能够使用用户和子用户运行非 root 用户。但是,这并没有提供从存储库下载图像和管理它们的任何东西。并且可以将 Docker 守护进程配置为以特定用户身份运行,但不能以请求它们的用户身份启动容器。

那么有什么方法可以让系统上的任何用户都可以像自己一样使用子用户运行容器,但仍然可以访问注册表?

我见过在这些条件下构建容器的工具,例如img,它确实在子用户的引擎盖下运行runc,但除非我错过了什么,否则它没有一种方便的方法来运行和管理构建的容器。大概假设它们将包含系统服务,但我想将容器用作特定用户任务的固定环境。

【问题讨论】:

  • podman 是我相信的方式。它无根运行,默认情况下为普通用户使用用户命名空间。它还具有补充构建工具 - buildah
  • @DanilaKiver,这将是一个完全有效的答案。

标签: docker-container runc


【解决方案1】:

您可以使用podman 代替docker,它可以由普通用户运行而无需提升权限。在使用它之前,您可能需要设置的唯一一件事(如root)是subuid/subgid 映射(请参阅安装说明)。该工具的 CLI 类似于 Docker 的 CLI(podman pullpodman run 等),也可以使用 Docker 注册表。

some limitations 用于无根容器,但在大多数情况下,这已经足够了。

【讨论】:

  • 太完美了。我想运行原本由用户运行的工具,所以限制无关紧要,否则它可以做 docker 可以做的所有事情以及更多的事情。
猜你喜欢
  • 2011-10-03
  • 2017-08-09
  • 2018-07-02
  • 2014-03-25
  • 1970-01-01
  • 2020-06-21
  • 2015-03-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多