linux docker“无法使用“--group-add docker”找到组docker”

at0kjp5o  于 2023-02-07  发布在  Linux
关注(0)|答案(2)|浏览(213)

我想知道为什么下面的--group-add docker不起作用,但是我有另一个优先的图像,它确实起作用了。

docker run \
    --rm \
    -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -v /etc/docker/daemon.json:/etc/docker/daemon.json \
    -v /etc/shadow:/etc/shadow \
    -v /etc/passwd:/etc/passwd \
    -v /etc/sudoers:/etc/sudoers \
    -v /etc/group:/etc/group \
    -u $(id -u):$(id -g) \
    --group-add docker \
    docker/compose:debian-1.27.4 \
    bash

它出错了

docker: Error response from daemon: Unable to find group docker.

我在使用其他映像(如ubuntuhello-world等)时遇到了同样的问题。映像中需要什么才能添加docker组?
我的系统:

  • Ubuntu 18.04
  • Docker 2013年3月19日

我知道主机中有docker组,可以在groups的输出中看到它。

nmpmafwu

nmpmafwu1#

使用命令时,您尝试将当前用户添加到组docker,但添加到 inside docker,而不是主机中。
由于docker中不存在组docker,因此您会收到错误消息。
如果确实需要,可以使用groupadd docker创建组,然后将用户添加到组中。

qoefvg9y

qoefvg9y2#

不幸的是,docker尝试在装载卷之前设置组(以及uid/gid),因此组docker(在主机上的/etc/group中定义)此时在容器中不可见,因为它不是映像中包含的/etc/group文件。

**[编辑]**在现代的Docker(例如20.10.23)中,使用数字gid作为Docker组就可以了。例如,如果Docker gid是999,使用--group-add 999代替--group-add docker

一个可能的解决方案是创建自己的映像,并将适当的/etc/group(可能还有passwd)文件放入其中,这不像只操作合成文件那么方便,但肯定会起到作用。
另一种方法是使用setpriv作为容器入口点。由于入口点是在装入卷后执行的,因此它可以访问已装入的/etc/group文件的内容。其他类似工具(如gosusu-exec)不支持辅助组ARAIK,但您可能会在其文档中找到一些安全相关信息,您可能需要考虑这些信息。具体取决于您的使用情形。

相关问题