在没有 root 访问权限的系统上构建 Docker 映像

Posted

技术标签:

【中文标题】在没有 root 访问权限的系统上构建 Docker 映像【英文标题】:Building Docker images on a system with no root access 【发布时间】:2018-11-09 23:40:36 【问题描述】:

我正在尝试将Dockerfile 构建到图像中。我想使用一个运行 OpenSUSE 的系统,该系统被完全锁定——我没有 root 访问权限,因此无法安装 docker 或运行 docker 守护程序来使用通常的 docker build 方法。

我已经研究过各种方法来做到这一点,但它们似乎都需要 root 访问权限,尽管它们声称以非特权身份运行。

img 似乎很有希望,但运行二进制文件会导致错误 failed to use newuidmap 并修复此问题似乎需要修改 root 拥有的文件。

Buildah 似乎也很有希望,但我遇到了类似的需要 root 来修复的 uid 问题。

【问题讨论】:

【参考方案1】:

您可以使用 buildah 构建容器镜像,无需 root 访问权限。为此,您需要 set up UID mapping,这需要 root 访问权限 - 编辑 /etc/subuid

$ cat /etc/subuid
username:100000:65536
$ ll /etc/subuid
-rw-r--r--. 1 root root 34 Dec  3 14:17 /etc/subuid

除非您的发行版提供了/etc/subuid 预填充,它适用于您的非特权用户,否则您无能为力,因为当前的 linux 内核实现 (

【讨论】:

【参考方案2】:

如果您询问使用 root 或 sudo 运行 Docker,您可以使用它。

类型:

 $ sudo gpasswd -a $USER docker

回车然后输入:

$ newgrp docker

现在使用 root 运行 docker

【讨论】:

我没有root权限 这个方法不会,但我想问有没有什么方法可以在没有root权限的情况下构建图像。

以上是关于在没有 root 访问权限的系统上构建 Docker 映像的主要内容,如果未能解决你的问题,请参考以下文章

如何在没有 root 访问权限的情况下安装 python 模块?

Debian下无root权限使用Python访问Oracle

当您没有 admin/root/sudo 访问权限时如何在 Netezza 上终止长时间运行的查询

在没有 gcc 或 root 访问权限的共享主机上安装需要 gcc 的 python 模块

如何在没有 root 访问权限的情况下获取已安装应用程序的 APK?

如何在没有 root 访问权限的情况下在服务器上杀死其他人的 Python 进程?