核心是启用userns-remap并配置宿主机subuid/subgid映射,使容器内UID 0映射为宿主机非特权UID(如100000);需确认内核支持CONFIG_USER_NS=y,创建映射用户并分配65536子ID,daemon.json中设"userns-remap":"dockermap",重启Docker后验证Userns-remap生效及进程UID偏移。
要让 docker 使用自定义用户命名空间(user namespace),核心不是在 daemon.json 里直接“配置命名空间”,而是通过启用 userns-remap 功能,并配合宿主机上的 uid/gid 映射规则来实现。docker 本身不提供“创建新命名空间”的参数,它依赖 linux 内核的 user namespace 机制,由 userns-remap 触发并管理映射关系。
确认内核支持用户命名空间
这是前提,否则开启 userns-remap 会失败:
- 运行
cat /boot/config-$(uname -r) | grep CONFIG_USER_NS,输出应为CONFIG_USER_NS=y - 检查
unshare --user echo ok是否能成功执行(普通用户也可试)
准备宿主机映射用户和 subuid/subgid 条目
Docker 的 userns-remap 必须指向一个真实存在的宿主机用户(或 default),且该用户在 /etc/subuid 和 /etc/subgid 中有连续的 65536 个子 ID 分配:
- 创建用户(如
dockermap):useradd -u 100000 -m dockermap - 为其分配子 ID 范围:
echo "dockermap:100000:65536" >> /etc/subuid和>> /etc/subgid - 确保无其他同名条目冲突,且范围不重叠
在 daemon.json 中启用 userns-remap
编辑 /etc/docker/daemon.json,添加或修改 userns-remap 字段:
MiniMax 图片理解 + 网络搜索 MCP 工具。适配 Docker 环境(极空间等),支持图片 OCR 识别、图像内容理解、网络搜索。API Key 安全存储在本地 credentials 文件,不暴露在代码中。
- 映射到指定用户:
"userns-remap": "dockermap" - 映射到默认用户(需提前用
userns-remap = default初始化):"userns-remap": "default" - ⚠️ 不要写成
"userns-remap": true—— 这是无效语法,Docker 会启动失败
完整示例片段:
{ "userns-remap": "dockermap", "data-root": "/var/lib/docker" }重启 Docker 并验证效果
修改后必须重启服务才能生效:
sudo systemctl restart docker- 查看是否启用:
docker info | grep "Userns",应显示Userns-remap: dockermap - 运行容器后,检查宿主机上容器进程的 UID:
ps auxf | grep docker-containers,主进程 UID 应落在100000–165535范围内 - 进入容器执行
id,会看到uid=0(root) gid=0(root);但在宿主机视角,它只是普通用户

















