虽然我已经启用了用户命名空间重映射,但是docker容器中的进程仍然在“host”的UID下运行。
操作系统是:4.4.0-21上的Ubuntu 16.04
> 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之后,容器中的所有进程都不在重映射范围内,而是主机的1到1,即容器根进程仍然具有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对我来说不起作用吗?
答案 0 :(得分:0)
/ etc / default / docker。
因此我在docker-config上做的任何更改(在我之前应用的dist-upgrade之后)都没有应用。
有关使用Systemd配置docker守护程序的信息,请参阅文档 https://docs.docker.com/engine/admin/systemd/
使用配置下拉文件 /etc/systemd/system/docker.service.d