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,可以用国内镜像源

bash 复制代码
# 1. 更新 apt 包索引
sudo apt-get update
sudo apt install ca-certificates curl gnupg lsb-release uidmap

sudo 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.gpg

sudo 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 后执行:

bash 复制代码
# 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(每次登录或手动)

bash 复制代码
# 临时前台启动
dockerd-rootless.sh
# 前台运行,终端关闭后 daemon 停止

# 后台启动并写日志
dockerd-rootless.sh > ~/.docker/rootless.log 2>&1 &

自动启动(推荐)

~/.bashrc~/.zshrc 添加:

bash 复制代码
export XDG_RUNTIME_DIR=$HOME/.docker/run
export PATH=/usr/bin:$PATH
export DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sock

mkdir -p "$XDG_RUNTIME_DIR"

# 自动启动 Rootless Docker(如果未运行)
if ! pgrep -u "$USER" dockerd-rootless.sh > /dev/null; then
    dockerd-rootless.sh >> ~/.docker/rootless.log 2>&1 &
fi
  • 每次登录 shell 自动启动 Rootless Docker
  • 日志保存到 ~/.docker/rootless.log
  • 避免重复启动导致 lock 错误

然后运行

bash 复制代码
source ~/.bashrc
dockerd-rootless-setuptool.sh install

测试 Docker 是否可用

Docker Rootless官方文档

bash 复制代码
docker info

注意事项

  1. 端口限制:Rootless Docker 只能绑定 >1024 端口
  2. 性能 :网络通过 slirp4netns,比 root Docker 略慢
  3. 数据隔离:每个用户自己的镜像和容器互不影响
  4. 停止/启动:关闭终端或 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
相关推荐
不会kao代码的小王1 分钟前
深信服超融合 HCI 核心技术解析:aSV、aSAN 与 aNET 的协同架构
运维·服务器·网络·数据库·github
YuTaoShao3 分钟前
【LeetCode 每日一题】1895. 最大的幻方——(解法二)前缀和优化
linux·算法·leetcode
a程序小傲6 分钟前
中国邮政Java面试被问:边缘计算的数据同步和计算卸载
java·服务器·开发语言·算法·面试·职场和发展·边缘计算
Java程序员威哥6 分钟前
Java微服务可观测性实战:Prometheus+Grafana+SkyWalking全链路监控落地
java·开发语言·python·docker·微服务·grafana·prometheus
翼龙云_cloud8 分钟前
亚马逊云渠道商:如何在AWS控制台中创建每月成本预算?
服务器·云计算·aws
小尧嵌入式12 分钟前
【Linux开发二】数字反转|除数累加|差分数组|vector插入和访问|小数四舍五入及向上取整|矩阵逆置|基础文件IO|深入文件IO
linux·服务器·开发语言·c++·线性代数·算法·矩阵
试试勇气14 分钟前
Linux学习笔记(十二)--用户缓冲区
linux·笔记·学习
@小博的博客15 分钟前
Linux 中的编译器 GCC 的编译原理和使用详解
linux·运维·服务器
wdfk_prog16 分钟前
[Linux]学习笔记系列 -- [drivers][base]faux
linux·笔记·学习
wheeldown19 分钟前
【Linux】TCP协议【2】: 从 echo 到远程命令执行:Linux TCP 服务器的并发与安全实践
linux·服务器·tcp/ip