【发布时间】: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