安装docker compose
作者使用的是ubuntu24.04LTS
这个脚本一键安装docker和docker compose
curl -fsSL https://get.docker.com | bash -s docker
以下是针对报错的解决方案
1 | WARNING: Access to the remote API on a privileged Docker daemon is equivalent |
1 | # 1. 安装必要的工具包(uidmap) |
注释:
uidmap包提供了newuidmap和newgidmap工具,是 Rootless 模式运行用户命名空间映射的必需组件。- 使用
sudo apt update先更新包索引,确保获取最新版本,避免安装过时或有安全漏洞的包。 -y参数自动确认安装,避免交互中断脚本执行,适合自动化或文档复制使用。
质量评价:高质量,必不可少。
1 | # 2. 检查并分配子 UID/GID(至少 65536 个) |
注释:
- 先检查当前用户是否已有足够的子 UID/GID 分配。
- 使用
$(whoami)动态获取用户名,避免硬编码,提高脚本可移植性。
质量评价:高质量,防御性检查,避免后续安装失败。
1 | # 3. 如果没有分配,则添加(需 root 权限) |
注释:
- 使用
>>追加方式,避免覆盖原有内容。 231072是 Docker 推荐的起始值(大于 100000,避免与系统用户冲突)。- 使用
sh -c和单引号嵌套,确保命令在 root 环境下正确展开变量。 - 重复两行确保 subuid 和 subgid 一致。
质量评价:高质量、安全且健壮。
1 | # 4. 禁用系统级(全特权)的 Docker 服务(避免冲突) |
注释:
--now参数同时停止服务并禁用开机自启,一步到位。- 禁用系统级的 docker.service 和 docker.socket,防止与 Rootless 模式的 socket 冲突(端口或路径冲突)。
质量评价:高质量,防止端口/路径冲突导致启动失败。
1 | # 5. 清理系统级 Docker socket(如果存在) |
注释:
-f参数强制删除且不提示错误(如果文件不存在也不会报错)。- 移除系统级 socket,彻底避免 Rootless 模式连接到错误的 daemon。
质量评价:高质量,清理遗留问题。
1 | # 6. 安装 Rootless 模式所需的额外包(推荐方式) |
注释:
- 该包包含
dockerd-rootless-setuptool.sh脚本和相关依赖。 - 使用官方仓库的包比手动下载脚本更可靠、可更新、安全。
质量评价:高质量,优先使用包管理器。
1 | # 7. 执行官方安装脚本(核心步骤) |
注释:
- 该脚本会自动:
- 创建
~/.config/systemd/user/docker.service用户级 systemd 服务 - 配置 DOCKER_HOST 环境变量
- 创建 rootless 上下文
- 安装必要的 fuse-overlayfs 等依赖(如需要)
- 创建
- 不使用 sudo,直接以普通用户运行,这是 Rootless 的核心理念。
质量评价:最高质量,官方推荐方式,一键完成复杂配置。
1 | # 8. 启用用户级服务持久运行(开机自启) |
注释:
enable-linger允许用户即使未登录也能运行后台服务(user@.service)。- 这是 Rootless Docker 开机自启的必要条件。
- 使用
$(whoami)保持通用性。
质量评价:高质量,必不可少。
1 | # 9. 将环境变量持久化到 shell 配置(推荐加入 ~/.bashrc) |
注释:
- Rootless 模式的 docker.sock 路径在用户运行时目录下,需要正确设置 DOCKER_HOST。
- 使用
$(id -u)获取当前 UID,更准确可靠。 - 添加到 ~/.bashrc 确保每次打开终端都生效。
质量评价:高质量,用户体验友好。
1 | # 10. 验证安装是否成功 |
注释:
docker info应显示 Context: rootless 和 Security Options 中包含 rootless。hello-world是最简单的功能验证,能测试拉取镜像、创建容器、运行的全流程。
质量评价:高质量,完整验证。
总结:为什么这些步骤是“高质量”的?
- 安全性高:全程避免不必要的 root 权限,使用官方推荐方式。
- 健壮性强:包含检查、清理、冲突避免步骤,减少失败概率。
- 可维护性好:使用变量而非硬编码,支持不同用户名。
- 符合最佳实践:完全遵循 Docker 官方 Rootless 文档(https://docs.docker.com/go/rootless/)。
- 用户友好:最后设置环境变量和验证步骤,让用户立即可用。。
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.


