Linux 服务器配置 rootless docker Quick Start
流程
- Root 用户安装 Rootless Docker 必需包
- 普通用户可独立初始化自己的 Rootless Docker 环境
- 普通用户无需 sudo 即可使用 Docker
Root 用户操作:安装 Rootless Docker 支持包
可参考 Docker官方文档 下载 Docker必须的配置。如果出现防火墙错误curl: (35) OpenSSL SSL_connect: Connection reset by peer in connection to download.docker.com:443,可以用国内镜像源
# 1. 更新 apt 包索引
sudo apt-get update
sudo apt install ca-certificates curl gnupg lsb-release uidmapsudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://mirrors.aliyun.com/docker-ce/linux/ubuntu
Suites: $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}")
Components: stable
Signed-By: /etc/apt/keyrings/docker.gpg
EOF
Types: deb
URIs: https://mirrors.aliyun.com/docker-ce/linux/ubuntu
Suites: jammy
Components: stable
Signed-By: /etc/apt/keyrings/docker.gpgsudo apt-get update# 下载 docker-ce-rootless-extras
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin docker-ce-rootless-extras
注意:这是全局安装包,只安装可执行文件和 Rootless 支持工具,不会自动启动 daemon。
普通用户初始化 Rootless Docker
普通用户在登录 shell 后执行:
# 1. 设置必要环境变量
export XDG_RUNTIME_DIR=$HOME/.docker/run
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock# 2. 创建运行目录
mkdir -p "$XDG_RUNTIME_DIR"# 3. 初始化 Rootless Docker daemon
dockerd-rootless-setuptool.sh install
# 会在用户目录创建 Rootless Docker 数据目录和配置
解释:
XDG_RUNTIME_DIR→ 存放 socket 和状态文件PATH→ 确保能找到 docker 命令DOCKER_HOST→ 告诉 CLI 去哪个 socket 通信dockerd-rootless-setuptool.sh install→ 初始化用户自己的 Rootless Docker 环境
启动 Rootless Docker(每次登录或手动)
# 临时前台启动
dockerd-rootless.sh
# 前台运行,终端关闭后 daemon 停止# 后台启动并写日志
dockerd-rootless.sh > ~/.docker/rootless.log 2>&1 &
自动启动(推荐)
在 ~/.bashrc 或 ~/.zshrc 添加:
export XDG_RUNTIME_DIR=$HOME/.docker/run
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sockmkdir -p "$XDG_RUNTIME_DIR"# 自动启动 Rootless Docker(如果未运行)
if ! pgrep -u "$USER" dockerd-rootless.sh > /dev/null; thendockerd-rootless.sh >> ~/.docker/rootless.log 2>&1 &
fi
- 每次登录 shell 自动启动 Rootless Docker
- 日志保存到
~/.docker/rootless.log - 避免重复启动导致 lock 错误
测试 Docker 是否可用
Docker Rootless官方文档
docker info
注意事项
- 端口限制:Rootless Docker 只能绑定 >1024 端口
- 性能:网络通过
slirp4netns,比 root Docker 略慢 - 数据隔离:每个用户自己的镜像和容器互不影响
- 停止/启动:关闭终端或 logout 后,非自动启动 daemon 会停止
✅ 总结流程
| 步骤 | Root/普通用户 | 指令 | 作用 |
|---|---|---|---|
| 1 | root | sudo apt-get install -y docker-ce-rootless-extras uidmap | 安装 Rootless Docker 支持包 |
| 2 | 普通用户 | export XDG_RUNTIME_DIR=...; mkdir -p $XDG_RUNTIME_DIR; dockerd-rootless-setuptool.sh install | 初始化 Rootless Docker 环境 |
| 3 | 普通用户 | dockerd-rootless.sh 或后台启动 | 启动用户 daemon |
| 4 | 普通用户 | 在 .bashrc 自动启动 | 登录自动启动 Rootless Docker |
| 5 | 普通用户 | docker info | 测试 Docker 是否连接到Rootless daemon |
