以普通用户身份运行OCI容器

时间:2019-07-11 20:08:52

标签: docker-container runc

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

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

现在runc是docker下的一个实际创建容器的工具,它能够使用用户和子用户运行非root用户。但是,这对于从存储库下载图像并进行管理没有任何帮助。而且,可以将Docker守护程序配置为以特定用户身份运行,而不是按照用户请求的方式启动容器。

那么,系统上的任何用户是否可以通过方式与子用户一起运行容器,但是仍然可以访问注册表?

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

1 个答案:

答案 0 :(得分:1)

您可以使用podman代替docker,它可以由普通用户运行而无需提升特权。使用前,您唯一需要设置的内容(如rootsubuid / subgid映射(请参阅安装说明)。该工具的CLI与Docker的CLI(podman pullpodman run等)相似,并且还可以使用Docker注册中心。

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