Debian下Docker Rootless模式如何关闭userns-remap或指定用户映射
Rootless Docker 用户映射调整方案(Debian)
一、修改Subuid/Subgid映射,让容器root对应宿主机1111用户
Rootless Docker默认通过分配连续subuid/subgid段实现用户隔离,你可以修改映射规则,让容器内root直接映射到宿主机的1111用户:
编辑
/etc/subuid和/etc/subgid文件- 找到用户
1111的条目,默认格式类似1111:363143:65536(用户名:起始UID:范围长度) - 将两行分别修改为:
这个配置指定:宿主机用户1111的subuid/subgid仅包含自身UID/GID,容器内的UID 0(root)会直接映射到宿主机UID 1111。1111:1111:1
- 找到用户
重启Rootless Docker服务
- 停止当前服务:
systemctl --user stop docker - 清理Docker运行缓存(避免旧映射残留):
rm -rf ~/.docker/run - 启动服务:
systemctl --user start docker
- 停止当前服务:
二、验证配置效果
运行测试容器,查看容器内root对应的宿主机UID:
docker run --rm alpine id -u
如果输出为1111,说明映射生效。
三、关于禁用userns-remap的说明
Rootless Docker的无特权运行完全依赖用户命名空间(userns)隔离,无法禁用userns-remap——禁用后,非root用户1111没有权限创建容器所需的内核资源(如网络设备、存储挂载点),Docker守护进程会启动失败。因此调整subuid/subgid映射是唯一符合你需求的方案:既保持Docker以非root用户运行,又让容器进程以宿主机1111身份执行。
内容的提问来源于stack exchange,提问作者morrow
相关产品推荐
相关产品推荐

