You need to enable JavaScript to run this app. RHEL 7.9下非root部署docker rootless daemon报错求助
优惠活动
大模型
产品
解决方案
定价
更多

RHEL 7.9下非root部署docker rootless daemon报错求助

RHEL 7.9 非root用户部署Rootless模式Docker Daemon报错排障

已执行的常规部署步骤

  • 新建并切换至非root权限的test用户
  • 拉取官方rootless安装脚本完成Docker rootless组件部署
  • 按官方指引配置三类运行环境变量:
    • export XDG_RUNTIME_DIR=/home/test/.docker/run
    • export PATH=/home/test/bin:$PATH
    • export DOCKER_HOST=unix:///home/test/.docker/run/docker.sock
  • 手动启动dockerd进程时执行命令:PATH=/home/test/bin:/sbin:/usr/sbin:$PATH dockerd-rootless.sh

启动阶段输出的报错信息

WARN[0000] The host root filesystem is mounted as "". Setting child propagation to "rslave" is not supported.
[rootlesskit:parent] error: failed to setup UID/GID map: newuidmap 666 [0 1003 1 1 296608 65536] failed: newuidmap: write to uid_map failed: Operation not permitted : exit status 1

根因定位与修复操作

该报错的核心诱因是RHEL7.9默认配置不满足Rootless模式的权限要求,具体为subuid映射规则缺失、newuidmap/newgidmap二进制权限不对、用户命名空间的内核参数被限制三类问题,按以下步骤逐一修复即可:

  • 检查/补全用户subuid、subgid映射规则
    • 确认/etc/subuid和/etc/subgid文件中存在test用户的合法映射条目,标准格式为test:100000:65536(即从100000起始分配连续65536个可用UID/GID给test用户)
    • 确认两个配置文件的权限为644,属主为root,避免非特权用户无法读取映射规则
  • 调整用户命名空间相关内核参数
    • 编辑/etc/sysctl.conf,追加以下配置:
      • user.max_user_namespaces = 15000
      • kernel.unprivileged_userns_clone = 1
    • 执行sysctl -p使配置即时生效
  • 补全newuidmap/newgidmap的SUID执行权限
    • 执行ls -l /usr/bin/newuidmap /usr/bin/newgidmap检查权限,正常权限应为-rwsr-xr-x. root root
    • 若缺失SUID位,执行chmod u+s /usr/bin/newuidmap /usr/bin/newgidmap修正权限
  • 处理启动时的挂载传播警告
    • 该警告不影响核心功能,仅代表当前主机根文件系统的挂载传播模式不支持rslave子挂载设置,可在启动时追加环境变量DOCKERD_ROOTLESS_ROOTLESSKIT_PROPAGATION=private屏蔽该警告

适配单容器运行场景的优化方案

  • 无需手动在终端拉起dockerd进程,可通过用户级systemd托管rootless dockerd,避免手动配置的环境变量随终端会话退出丢失
  • 若仅需运行单个容器、不需要完整daemon的多容器编排能力,可直接使用rootless自带的docker客户端通过配置的Unix Socket直连进程,减少不必要的资源占用

内容的提问来源于stack exchange,提问作者tkcode

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.29 08:15:04