docker 开启用户命名空间映射
此项功能可以极大提高 docker 自身安全性,减少攻击面。docker 中的 root 用户在外部系统中被映射为专门创建好的特殊 docker 用户,不再是以传统的 id 为 0 的 root 用户身份执行 docker 内程序。这样即使因为某些漏洞造成 docker 逃逸,逃逸到外部的程序也无权操控系统的任何其他组件。
1. 操作流程
- 执行
sudo nano /etc/docker/daemon.json
编辑 dockerd 配置文件,加入如下条目:
sudo systemctl restart docker.service
重启 docker 服务
2. 验证是否成功开启
下面我们来验证几个关于用户隔离的几个点。
首先执行 sudo id dockremap
,验证 docker 是否创建了一个名为 dockremap 的用户:
然后执行 sudo cat /etc/subuid
和 sudo cat /etc/subgid
,查看文件中是否添加了新用户 dockremap 相关的项:
通过上面的检查,我们可以确认 docker daemon 已经启用了用户隔离的功能。
3. 文件 / 目录权限问题
开启此功能后,当需要把宿主机中的文件 / 目录映射到 docker 容器中时,需要先修改其对应的 owner 用户和组,使其可以被容器中的程序正常读写。
首先确定 dockremap 用户和组的 id 是多少,比如以上面的截图为例,其 id 为 165536。不同系统中,此值可能并不一样
确定好 id 之后,执行如下命令即可:
举例:
然后再启动 docker 容器,容器中的程序就可以正常工作了。
docker 开启用户命名空间映射
https://blog.openyq.top/posts/56369/