全部学科
Python全栈
python
NodeJS全栈
nodejs
小程序首页
📅 2026-05-21 6 分钟 ✍️ juanwangdev

Rootless 模式运行

Rootless Docker 消除 root 权限风险,下面介绍配置方法。

Rootless 原理

Bash
传统 Docker (root):
Docker Daemon 以 root 运行 → 容器进程以 root 运行

Rootless Docker:
Docker Daemon 以普通用户运行 → 容器进程以普通用户运行

Rootless 模式通过 USER Namespace 实现,容器 root 映射为宿主普通用户。

安装 Rootless

Bash
# 安装 Rootless Docker
curl -fsSL https://get.docker.com/rootless | sh

# 配置环境变量
export PATH=/home/user/bin:$PATH
export DOCKER_HOST=unix:///run/user/1000/docker.sock

启动 Rootless Daemon

Bash
# 启动 Rootless Docker Daemon
systemctl --user start docker

# 开机自启
systemctl --user enable docker

运行容器

Bash
# 运行容器(与 root 模式相同)
docker run -d --name my-app -p 8080:80 nginx

# 容器内 root = 宿主普通用户
docker exec my-app whoami
# 输出: root(但实际是宿主 uid=1000)

限制

网络限制

Bash
# Rootless 不支持 host 网络
docker run --network host nginx  # 失败

# 不支持端口绑定(<1024)
docker run -p 80:80 nginx  # 失败
docker run -p 8080:80 nginx  # 成功

存储限制

Bash
# 仅支持 overlay2 驱动
# 不支持某些存储选项

资源限制

Bash
# Cgroups 需要额外配置
# 默认无资源限制,需配置 systemd slice

Rootless vs Rootful

特性RootlessRootful
安全性
端口绑定≥1024任意
网络模式bridge 仅全部
存储驱动overlay2多种
推荐场景开发/测试生产

生产环境注意

Bash
# Rootless 适合开发和测试
# 生产环境仍建议使用 rootful + 安全加固

# 原因:
# - 端口限制
# - 网络功能不完整
# - 某些安全选项不支持

混合部署

text
# Rootful 生产环境
sudo dockerd

# Rootless 开发环境
systemctl --user start docker

要点总结

  • Rootless Docker 以普通用户运行 Daemon,消除 root 权限风险
  • 通过 USER Namespace 实现容器 root 映射为宿主普通用户
  • 不支持 host 网络和低端口绑定(<1024)
  • 仅支持 overlay2 驱动,某些存储选项不可用
  • 适合开发测试,生产环境仍需 rootful + 安全加固

📝 发现内容有误?点击此处直接编辑

← 上一篇 镜像层优化与瘦身
下一篇 → 合规性与审计
想查看更多题目和详细解析?
小程序提供完整的题库、模拟考试和详细解析
马上就来

长按或扫描二维码,立即体验

扫码体验小程序
马上就来
使用微信扫描二维码
立即体验完整题库