rootless模式启动失败最常见原因是/etc/subuid和/etc/subgid未为当前用户配置≥65536个连续子ID映射;需用grep检查存在性及格式,无效则用echo加sudo追加标准映射,并验证/proc/self/uid_map是否生效。
直接检查 /etc/subuid 和 /etc/subgid 是否为当前用户配置了足够范围的 id 映射,这是 rootless 模式启动失败最常见原因之一。
确认当前用户是否在 subuid/subgid 中有分配
运行以下命令查看映射是否存在:
grep "^$(whoami):" /etc/subuid<br>grep "^$(whoami):" /etc/subgid
正常应输出类似:alice:100000:65536
若无输出,说明未配置;若格式错误(如缺字段、ID 为负数、数量不足 65536),也视为无效。
验证映射范围是否合规
rootless 模式要求每个用户至少分配 65536 个连续子 ID(即第三字段 ≥ 65536),且起始 ID(第二字段)不能与系统保留 UID 冲突(通常 ≥ 100000 更安全)。例如:
- ✅ 有效:
alice:100000:65536或alice:200000:65536 - ❌ 无效:
alice:1000:1000(数量太少)、alice::65536(起始 ID 缺失)、alice:100000:1000(数量不足)
快速修复配置
以当前用户为例,执行以下命令追加标准映射(需 sudo 权限):
echo "$(whoami):100000:65536" | sudo tee -a /etc/subuid<br>echo "$(whoami):100000:65536" | sudo tee -a /etc/subgid
注意:修改后无需重启系统,但需确保后续启动的 rootless docker 进程能读取到新配置(建议重新登录或重置 XDG_RUNTIME_DIR)。
辅助验证是否生效
运行 cat /proc/self/uid_map 和 cat /proc/self/gid_map 查看当前 shell 的映射状态。在已正确配置 subuid/subgid 的前提下,rootless docker 启动时会自动创建对应命名空间映射 —— 若这两文件为空或仅含 0 0 4294967295,说明内核未启用 user namespace 或映射未加载。


















