docker@rootless模式介绍

在 Docker 中,rootless 模式(Rootless Mode)是指 Docker 以非 root 用户身份运行,而不是像传统方式那样由 root 用户(或具有 root 权限的用户)来运行 Docker 守护进程(dockerd)和容器。


1.为什么需要 Rootless 模式?

传统 Docker 以 root 权限运行,存在以下安全隐患:

  • Docker 守护进程可以完全控制主机系统,存在提权风险。
  • 容器中的进程也常以 root 身份运行,一旦容器逃逸,可能控制整个主机。
  • 在多用户共享环境(如开发机、CI/CD 环境)中存在更高风险。

2.Rootless 模式的特点

特性 说明
✅ 非 root 用户运行 不需要 sudo 或 root 权限即可运行 Docker 守护进程和容器。
✅ 增强安全性 容器逃逸攻击的危害大幅降低,因为攻击者无法直接访问主机 root。
⚠️ 有功能限制 某些功能(如绑定 80 端口、cgroup 限制)可能受限,除非做额外配置。
✅ 支持用户命名空间 利用 Linux 用户命名空间技术实现 UID/GID 映射。

3.如何启用 Rootless Docker?

官方推荐方式如下:

  1. 安装 Docker:

    1
    curl -fsSL https://get.docker.com/rootless | sh
  2. 设置环境变量(通常自动添加):

    1
    2
    export PATH=/home/$(whoami)/bin:$PATH
    export DOCKER_HOST=unix:///run/user/$(id -u)/docker.sock
  3. 启动 Docker Rootless 守护进程:

    1
    systemctl --user start docker

4.使用场景

  • 多用户开发环境(例如高校或公司共享服务器)
  • 提高容器运行安全性的系统
  • 无法获得 root 权限的系统(如某些 VPS 或托管环境)

5.总结

Docker Rootless 模式允许你在没有 root 权限的情况下安全地运行 Docker,从而提高整体系统的安全性,但可能需要处理某些功能上的限制(例如端口绑定、性能调优等)。