【问题标题】:Linux user groups missing when user mounted to container用户挂载到容器时缺少 Linux 用户组
【发布时间】:2021-03-16 16:31:32
【问题描述】:

问题:附加到 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. 使用示例用户附加的组是 sample 和 docker,在主机上使用 groups 命令检查。
  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 缺失。

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

【问题讨论】:

  • 也许你可以尝试挂载/etc/group。
  • 关于补充用户组成员的信息存储在/etc/group。正如 Philippe 建议的那样,您还需要映射它。

标签: linux docker usergroups


【解决方案1】:

问题在于 Docker 加载用户和组信息的方式。

问题已经报告给 Docker,因为它无法加载存储在 /etc/groups 文件中的附加组信息,因此,即使我们挂载 /etc/groups 文件,Docker 也不会遵守它。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2020-02-20
    • 2016-03-13
    • 2015-01-20
    • 1970-01-01
    • 2019-08-19
    相关资源
    最近更新 更多