Linux 用户装载到容器时缺少用户组

Linux user groups missing when user mounted to container

问题:附加到 Linux 用户的组在容器内不可见。

工作流程:

  1. 创建了一个 docker 图像,其中创建了一个名为 sample:sample(8000:8000)usergroup
  2. 使用相同的 docker 图像创建了一个容器,并使用 readOnly 访问权限装载了 /etc/passwd 文件。
Command: docker run -itd --user "8000:8000" -v /etc/passwd:/etc/passwd:ro docker_image_name:latest bash

注意:主机上也存在用户&组sample:sample(8000:8000)。

  1. 示例用户附加的组是示例,docker 使用组命令在主机上检查。
  2. 执行到容器中并触发以下命令,
Command 1: whoami
Output: sample
Command 2: id -u
Output: 8000
Command 3: id -g
Output: 8000
Command 4: groups
Output: sample

观察:

  1. 正如我们所见,在容器内附加到样本用户的组只是样本,docker 缺失。

预期行为: 由于示例用户存在于主机和容器中,我希望与容器内的主机用户关联的组也一样,即我希望主机用户详细信息覆盖容器中存在的用户。

The issue lies in the way Docker loads the user and group information.

问题已报告给 Docker,因为它无法加载存储在 /etc/groups 文件中的其他组信息,因此,即使我们装载 /etc/groups 文件 Docker 不尊重它。

因此,解决方案是使用 docker 提供的 --group-add 选项关联所需的组。

注意:提供的这个群组必须是有效的群组,然后它将与您的用户与现有群组相关联。