【问题标题】:Docker: user namespace remapping not working although enabled for daemonDocker:尽管启用了守护程序,但用户命名空间重新映射不起作用
【发布时间】:2017-01-03 03:10:12
【问题描述】:

尽管我启用了用户命名空间重映射,但 docker 容器中的进程仍在“主机的”UID 下运行。

操作系统是:Ubuntu 16.04 on 4.4.0-21 with

> sudo docker --version
Docker version 1.12.0, build 8eab29e

dockerd 配置是

> grep "DOCKER_OPTS" /etc/default/docker
DOCKER_OPTS="--dns 8.8.8.8 --dns 8.8.4.4 --ipv6  --userns-remap=default"

从属 UID 和 GID 映射已创建,当我手动运行时,即使用上述 docker opts 字符串

> grep "dock" /etc/sub*
/etc/subgid:dockremap:362144:65536
/etc/subuid:dockremap:362144:65536

但是,当我(重新)将 dockerd 作为服务启动时,并没有创建子 UID/GID,而是必须手动运行它。

同样重启dockerd后,容器中的所有进程都不在remapped范围内,而是与宿主机1to1,即容器根进程的UID仍然为0。

例如,仅在顶部运行的测试容器

> sudo docker run -t -i ubuntu /usr/bin/top
  ...

在主机上的容器外部检查时,UID=0 已顶级运行

> ps -xaf --forest -o pid,ruid,ruser,cmd | grep top
PID  RUID RUSER    CMD
23015     0 root      |           \_ sudo docker run -t -i ubuntu /usr/bin/top
23016     0 root      |               \_ docker run -t -i ubuntu /usr/bin/top

显然,在将 docker 作为守护进程运行时,重新映射到从属 UID 对我不起作用?

【问题讨论】:

    标签: docker namespaces daemon


    【解决方案1】:

    /etc/default/docker 在通过 systemd 运行 dockerd 时不使用。

    因此,我对 docker-config 所做的任何更改(在我之前应用的 dist-upgrade 之后)都没有应用。

    如需使用 Systemd 配置 docker 守护进程,请参阅文档 https://docs.docker.com/engine/admin/systemd/

    将配置放入文件 /etc/systemd/system/docker.service.d

    【讨论】:

      猜你喜欢
      • 2019-04-01
      • 1970-01-01
      • 2012-11-27
      • 1970-01-01
      • 2015-03-08
      • 1970-01-01
      • 2020-07-13
      • 1970-01-01
      • 2015-12-24
      相关资源
      最近更新 更多