LinuxMirrors Docker 安装与换源
Quick Start
先区分三条路径:全新安装 Docker Engine、替换 Docker CE 软件包仓库、仅配置 Registry Mirror。三者影响面不同,不要把“安装源”和“镜像拉取加速”混写。
可直接使用:
- “为 Rocky Linux 9 规划 Docker Engine 安装和验证,先不要执行。”
- “Docker 已安装,只用 LinuxMirrors 更换 Registry Mirror。”
- “安全合并多个 registry-mirrors 到现有 daemon.json,并给回滚步骤。”
只读确认 Docker 状态:
docker version 2>/dev/null || true
检查当前 Mirror,不修改配置:
docker info 2>/dev/null | sed -n '/Registry Mirrors/,+5p'
检查 Compose V2:
docker compose version 2>/dev/null || true
什么时候使用
当用户要安装 Docker Engine、更换 Docker CE 软件包仓库、配置 Registry Mirror 或排查 docker.sh/--only-registry 时使用。普通系统软件源、Docker Desktop、containerd/Kubernetes 全局镜像配置不适用。
适用用户
- 新手:先区分全新安装、CE 仓库和 Registry 三种模式。
- 运维人员:重点保护 repo、daemon.json、服务状态与容器数据。
- 平台工程师:使用显式版本、固定脚本提交、批次验证和回滚门禁。
前置条件
必须知道发行版、版本、架构、Docker 是否已安装、init 系统、现有 daemon.json 和维护授权。
使用方式
Step 1:预检
读取预检清单,确认发行版、版本、架构、root、Docker 状态、init 系统和现有配置。
Step 2:选路径
全新安装/修复 CE 仓库/--only-registry 三选一,参考模式差异。
Step 3:定参数
从参数参考选择源、Registry、版本及语言参数。
Step 4:保护现场
备份 /etc/docker/daemon.json 和 Docker CE repo 文件,记录当前 Docker 版本与服务状态。
Step 5:先确认再执行
展示影响面;默认不关闭防火墙,不在未知生产机直接运行。
Step 6:验证
检查 repo、docker version、服务状态、docker info Registry Mirrors 与实际拉取。
Step 7:回滚
按回滚指南恢复 JSON/repo 备份并重启或恢复原服务状态。
能力边界与不适用场景
✅ 擅长处理
- Debian 系和 Red Hat 系 Linux 上的 Docker Engine 安装及 Docker CE 仓库换源规划。
- 已安装 Docker 的
--only-registry、单个/多个 Registry Mirror 和daemon.json合并。 - 指定版本、内网源、服务验证、失败排查和配置回滚。
⚠️ 需要条件
- 实际安装需要 root、受支持发行版、网络、维护窗口和包管理器可用。
- 指定
--designated-version需要先查询仓库实际提供的完整版本。 - 现有
daemon.json含代理、日志驱动、私有仓库等配置时必须做 JSON 级合并而非覆盖。
❌ 超出范围(给替代方案)
- Docker Desktop、Windows 或 macOS → 使用 Docker Desktop 官方设置与企业策略。
- Rootless Docker、无兼容包管理器的独立发行版 → 参考 Docker 官方二进制或 rootless 文档。
- Kubernetes/containerd 全局镜像配置 → 使用对应运行时与集群配置流程,不能只改 Docker。
资料路由
- 完整选项:读参数参考。
- 支持范围:读兼容性。
- 三种工作模式:读模式差异。
- 主脚本与 Lite:读脚本选择。
- 运行前:读预检清单。
- JSON 安全合并:读daemon.json 指南。
- 恢复配置:读回滚指南。
- 报错排查:读故障排查。
安全与隐私
本技能不收集或上传用户数据,不要求主机密码、SSH 私钥或 Registry 凭据。先审查远程脚本再运行。默认保留防火墙,只有用户明确授权并理解暴露面时才讨论 --close-firewall true。不要覆盖未知的 daemon.json,不要把私有 Registry 凭据写入示例。
Rules
- 禁止混淆 Docker CE 软件源和 Registry Mirror。
- 禁止臆造安装版本、仓库路径、镜像地址或验证结果。
- 默认不关闭防火墙,不覆盖现有 daemon.json,不删除容器数据。
- 服务启动失败先验证 JSON 和日志,再决定恢复备份。
信息不足时
先按“Docker 已安装、只更换 Registry、systemd、保留现有 daemon.json、不关闭防火墙、只生成方案”给出安全示例。请补充:发行版与版本、架构、Docker 是否已安装、目标是 CE 软件源还是 Registry、init 系统、现有 daemon.json、是否有私有仓库或代理。
验证清单
- 是否明确选择安装、CE 仓库或仅 Registry 路径?
- 参数是否存在于当前
DockerInstallation.sh --help? daemon.json是否先通过jq/JSON 解析校验并备份?- 是否保持防火墙默认不变?
- 是否同时验证服务状态、
docker info和实际拉取?
Gotchas
- Docker CE 软件源决定软件包下载,Registry Mirror 决定镜像拉取,二者不可互换。
--only-registry检测不到 Docker Engine 时会退出,不能当作安装命令。- 直接重写
daemon.json会丢失日志、代理、data-root 等现有配置;必须合并。 - Registry Mirror 可访问不代表 Docker CE 软件仓库可访问,反之亦然。
--close-firewall true影响主机安全边界,不得作为默认“安装优化”。- 指定版本只写
28.0.0仍可能受发行版包版本格式影响,先查询仓库列表。
FAQ
Q1:只想加速拉镜像怎么办? Docker 已安装时使用 --only-registry,并通过 --source-registry 指定一个或多个地址。
Q2:多个地址怎么写? 使用英文逗号分隔,并验证每个地址;顺序代表尝试优先级而非自动测速。
Q3:Compose 需要单独安装吗? 当前脚本集成 Docker Compose V2 插件,使用 docker compose,不要默认依赖旧的 docker-compose。
Q4:如何确认 Mirror 生效? docker info 查看 Registry Mirrors,再拉取公开小镜像并观察错误与耗时。
Q5:可以覆盖 daemon.json 吗? 只有确认文件不存在或内容可全部替换时;默认应解析、合并、校验和备份。
Q6:脚本支持所有 Linux 吗? Docker 脚本主要面向 Debian 系和 Red Hat 系及衍生版;独立发行版要改用官方安装方式。