Linux 用户装载到容器时缺少用户组
Linux user groups missing when user mounted to container
问题:附加到 Linux 用户的组在容器内不可见。
工作流程:
- 创建了一个 docker 图像,其中创建了一个名为
sample:sample(8000:8000)
的 user
和 group
。
- 使用相同的 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)。
- 示例用户附加的组是示例,docker 使用组命令在主机上检查。
- 执行到容器中并触发以下命令,
Command 1: whoami
Output: sample
Command 2: id -u
Output: 8000
Command 3: id -g
Output: 8000
Command 4: groups
Output: sample
观察:
- 正如我们所见,在容器内附加到样本用户的组只是样本,docker 缺失。
预期行为:
由于示例用户存在于主机和容器中,我希望与容器内的主机用户关联的组也一样,即我希望主机用户详细信息覆盖容器中存在的用户。
The issue lies in the way Docker loads the user and group information.
问题已报告给 Docker,因为它无法加载存储在 /etc/groups
文件中的其他组信息,因此,即使我们装载 /etc/groups
文件 Docker 不尊重它。
因此,解决方案是使用 docker 提供的 --group-add
选项关联所需的组。
注意:提供的这个群组必须是有效的群组,然后它将与您的用户与现有群组相关联。
问题:附加到 Linux 用户的组在容器内不可见。
工作流程:
- 创建了一个 docker 图像,其中创建了一个名为
sample:sample(8000:8000)
的user
和group
。 - 使用相同的 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)。
- 示例用户附加的组是示例,docker 使用组命令在主机上检查。
- 执行到容器中并触发以下命令,
Command 1: whoami
Output: sample
Command 2: id -u
Output: 8000
Command 3: id -g
Output: 8000
Command 4: groups
Output: sample
观察:
- 正如我们所见,在容器内附加到样本用户的组只是样本,docker 缺失。
预期行为: 由于示例用户存在于主机和容器中,我希望与容器内的主机用户关联的组也一样,即我希望主机用户详细信息覆盖容器中存在的用户。
The issue lies in the way Docker loads the user and group information.
问题已报告给 Docker,因为它无法加载存储在 /etc/groups
文件中的其他组信息,因此,即使我们装载 /etc/groups
文件 Docker 不尊重它。
因此,解决方案是使用 docker 提供的 --group-add
选项关联所需的组。
注意:提供的这个群组必须是有效的群组,然后它将与您的用户与现有群组相关联。