# Rootless Docker 与安全边界

URL: https://caijiao.org/docker/advanced/rootless
Source: docs/docker/advanced/rootless.md
Description: 本章节介绍 Rootless Docker 的使用方法及安全边界管理，包括非 root 容器运行原理、配置步骤、权限限制和网络隔离策略，提升容器安全性并降低宿主系统风险。

Rootless Docker 允许在非 root 用户下运行 Docker 容器，从而降低容器权限对宿主系统的影响，提高安全性。

## 1. Rootless Docker 概述

- **特点**：
  - 不需要 root 权限即可运行 Docker 守护进程
  - 容器中的 root 用户仅限于用户命名空间内
  - 减少对宿主系统的潜在安全风险

- **适用场景**：
  - 开发环境
  - 对宿主系统安全要求较高的生产环境
  - 多租户系统

## 2. 安装 Rootless Docker

- 安装脚本：

```bash
curl -fsSL https://get.docker.com/rootless | sh
````

- 配置环境变量：

```bash
export PATH=/home/<user>/bin:$PATH
export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
```

- 启动 Rootless Docker：

```bash
systemctl --user start docker
systemctl --user enable docker
```

## 3. 容器运行权限

- Rootless Docker 容器中 root 用户仅在用户命名空间有效
- 容器无法直接访问宿主 root 权限
- 限制了特权操作，如绑定低端口、直接修改宿主文件系统

## 4. 网络隔离与安全边界

- 默认使用 slirp4netns 提供用户空间网络
- 不允许直接使用 host 网络模式
- 可以配置 VPN 或端口映射访问外部网络
- 结合 cgroups 和 seccomp 提供额外安全边界

## 5. 限制与注意事项

- Rootless Docker 性能可能略低于普通 Docker
- 某些特权容器功能不可用（如直接访问宿主块设备）
- 需要正确配置用户命名空间和环境变量

## 6. 最佳实践

- 在多租户或开发环境优先使用 Rootless Docker
- 配合安全配置（seccomp、AppArmor）增强安全性
- 使用非 root 用户管理容器生命周期
- 定期更新 Rootless Docker 版本，修复安全漏洞

---

通过 Rootless Docker，开发者可以在降低权限风险的同时运行容器，增强容器与宿主系统之间的安全隔离，为安全敏感场景提供可靠解决方案。
