代码之家  ›  专栏  ›  技术社区  ›  Matthew James Briggs

Docker用户重新映射权限问题

  •  1
  • Matthew James Briggs  · 技术社区  · 7 年前

    我试图在ubuntu 16.04主机上运行docker守护进程,这样docker容器中的进程就不再作为 root 是的。

    我改变了 /etc/docker/daemon.json 如下所示

    {
      "experimental": true,
      "bip": "192.19.77.1/24",
      "storage-driver": "overlay2",
      "graph": "/opt/docker",
      "userns-remap": "default"
    }
    

    (注意,我指定了 graph 位置为 /opt/docker 根据我客户的要求。)

    Docker似乎添加了如下条目:

    cat /etc/subuid
    me:100000:65536
    dockremap:165536:65536
    
    cat /etc/subgid
    me:100000:65536
    dockremap:165536:65536
    

    在这之后,如果我试图用 sudo dockerd ,我得到以下信息:

    # sudo dockerd
    WARN[0000] The "graph" config file option is deprecated. Please use "data-root" instead.
    WARN[0000] Running experimental build
    INFO[2018-07-04T12:31:43.430653152-07:00] User namespaces: ID ranges will be mapped to subuid/subgid ranges of: dockremap:dockremap
    a subdirectory in your graphroot path (/opt/docker/165536.165536) restricts access to the remapped root uid/gid; please fix by allowing 'o+x' permissions on existing directories
    

    在与 chown chmod 这个 /选择/停靠 目录如下:

    # ls -al
    total 60
    drwx--x--x 15 dockremap dockremap 4096 Jul  4 11:42 .
    drwxr-s---  4 mjb       mjb       4096 Jul  4 11:32 ..
    drwxrwxrwx  2    165536    165536 4096 Jul  4 11:38 165536.165536
    drwx--S---  2 dockremap dockremap 4096 Jun  8 13:16 builder
    drwx--s--x  3 dockremap dockremap 4096 Jun  8 13:16 containerd
    drwx--S---  2 dockremap dockremap 4096 Jul  4 11:40 containers
    drwx--S---  3 dockremap dockremap 4096 Jun  8 13:16 image
    drwxr-s---  3 dockremap dockremap 4096 Jun  8 13:16 network
    drwx--S---  3 dockremap dockremap 4096 Jul  4 11:42 overlay2
    drwx--S---  4 dockremap dockremap 4096 Jun  8 13:16 plugins
    drwx------  2 dockremap dockremap 4096 Jul  4 11:42 runtimes
    drwx--S---  2 dockremap dockremap 4096 Jun  8 13:16 swarm
    drwx------  2 dockremap dockremap 4096 Jul  4 11:42 tmp
    drwx--S---  2 dockremap dockremap 4096 Jun  8 13:16 trust
    drwx--S---  2 dockremap dockremap 4096 Jun  8 13:16 volumes
    

    这个错误在许多不同的尝试中一直存在 乔恩 克莫德 是的。

    有很多类似的问题,但没有一个能让我有足够的洞察力来解决这个问题。

    我需要做什么才能让Docker守护进程从所需的用户重新映射选项开始?

    1 回复  |  直到 7 年前
        1
  •  2
  •   Matthew James Briggs    6 年前

    我已经完成了,我的 /etc/docker/daemon.json 看起来像这样:

    {
      "experimental": true,
      "bip": "192.19.77.1/24",
      "storage-driver": "overlay2",
      "graph": "/opt/docker",
      "userns-remap": "webapp:webgrp"
    }
    

    注意用户重新映射 "webapp:webgrp"

    我的Linux用户命名空间文件如下所示:

    cat /etc/subuid
    me:100000:65536
    webapp:500000:65536
    
    cat /etc/subgid
    me:100000:65536
    webgrp:500000:65536
    

    请注意 webapp:webgrp 映射到 500000:500000 在用户和组命名空间文件中。

    这个 /opt/docker 文件夹(Docker发挥其魔力的地方)如下所示:

    drwx--x--x 3 root root 27 Jul 31 2018 docker

    如果我们在目录里查一下 ls -al /opt/docker 我们可以看到Docker为自己创建了一个目录,如下所示:

    drwx------ 15 500000 500000 200 Feb 14 21:21 500000.500000

    另一件重要的事情是不断增加的数量。如果要将目录作为卷装入Docker容器,则需要执行以下操作:

    chown -R 500000:500000 /the/dir/i/want/to/mount

    在Docker容器中,这看起来像“根:根”。Docker容器可以 chown 如果需要,例如我的MongoDB容器 chowns 直飞 500999:500999 容器里面是什么 999:999 是的。

    我希望这对某人有帮助。

    我的Docker版本是 Docker version 18.09.2, build 6247962 在Ubuntu16上。

    推荐文章