2. 环境准备:Docker Desktop 与 Docker Engine 的安装与版本验证,配置国内镜像加速器
在开始数据库缓存回归冒烟测试之前,必须搭建标准化的容器运行时环境。本章将指导你完成 Docker Desktop(适用于 macOS/Windows)与 Docker Engine(适用于 Linux)的安装、版本验证,并配置国内镜像加速器以提升镜像拉取速度。
2.1 运行时选择:Docker Desktop vs Docker Engine
根据宿主操作系统选择对应的 Docker 运行时。下表列出了两者的核心差异与适用场景:
| 特性 | Docker Desktop | Docker Engine |
|---|---|---|
| 目标平台 | macOS、Windows | Linux(Ubuntu/CentOS/Debian 等) |
| 安装方式 | 图形化安装包(.dmg / .exe) | 包管理器(apt / yum)或脚本 |
| 内置组件 | Docker Engine + Docker Compose + Kubernetes | 仅 Docker Engine(Compose 需单独安装) |
| 虚拟化层 | HyperKit / WSL2 虚拟机 | 直接使用 Linux 内核命名空间 |
| 资源占用 | 较高(含虚拟机开销) | 较低(原生内核级) |
| 推荐场景 | 开发环境、跨平台团队 | 生产服务器、CI/CD 节点 |
课程建议: 本课程后续的 Docker Compose 编排与缓存服务部署,在 Docker Desktop 和 Docker Engine 上行为完全一致。如果你使用 macOS/Windows,请安装 Docker Desktop;如果使用 Linux,请安装 Docker Engine + Docker Compose Plugin。
2.2 安装步骤与版本验证
2.2.1 Docker Desktop(macOS / Windows)
- 访问 Docker Desktop 官方下载页,选择对应操作系统的稳定版安装包。
- 双击安装包,按向导完成安装。macOS 用户需允许系统扩展;Windows 用户需启用 WSL2 或 Hyper-V。
- 启动 Docker Desktop,等待右下角鲸鱼图标变为稳定状态(绿色指示灯)。
- 打开终端,执行版本验证命令:
# 验证 Docker Engine 版本
docker version --format '{{.Server.Version}}'
# 验证 Docker Compose 版本
docker compose version
# 验证 Docker Desktop 版本(仅 Desktop 可用)
docker --version
2.2.2 Docker Engine(Linux)
- 卸载旧版本(如有):
sudo apt-get remove docker docker-engine docker.io containerd runc
- 安装依赖并添加 Docker 官方 GPG 密钥与仓库(以 Ubuntu 为例):
sudo apt-get update
sudo apt-get install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
- 安装 Docker Engine 与 Compose 插件:
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
- 启动 Docker 并设置开机自启:
sudo systemctl enable docker
sudo systemctl start docker
- 将当前用户加入 docker 组(避免每次使用 sudo):
sudo usermod -aG docker $USER
newgrp docker
- 验证安装:
docker version --format '{{.Server.Version}}'
docker compose version
版本要求: 本课程所有编排与缓存服务验证基于 Docker Engine ≥ 24.0 与 Docker Compose ≥ 2.20。请确保你的版本不低于上述要求。若版本过低,请参考官方文档升级。
2.3 配置国内镜像加速器
由于 Docker Hub 服务器位于海外,直接拉取镜像可能速度缓慢或超时。配置国内镜像加速器可以显著提升拉取效率。以下为常用加速器地址:
| 服务商 | 加速器地址 | 备注 |
|---|---|---|
| 阿里云(个人版) | https://<your_code>.mirror.aliyuncs.com |
需登录阿里云容器镜像服务获取专属地址 |
| 腾讯云 | https://mirror.ccs.tencentyun.com |
公有云用户可用 |
| 华为云 | https://05f073ad3c0010ea0f4bc00b7105ec20.mirror.swr.myhuaweicloud.com |
公有云用户可用 |
| 中科大(USTC) | https://docker.mirrors.ustc.edu.cn |
教育网推荐,无需注册 |
| 网易 | http://hub-mirror.c.163.com |
无需注册 |
2.3.1 Docker Desktop 配置加速器
- 打开 Docker Desktop,点击右上角设置齿轮图标。
- 导航到 Docker Engine 选项卡。
- 在 JSON 配置中添加
registry-mirrors字段:
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
- 点击 Apply & Restart 使配置生效。
2.3.2 Docker Engine(Linux)配置加速器
- 创建或编辑 Docker 守护进程配置文件:
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
"registry-mirrors": [
"https://docker.mirrors.ustc.edu.cn",
"https://hub-mirror.c.163.com"
]
}
EOF
- 重新加载配置并重启 Docker:
sudo systemctl daemon-reload
sudo systemctl restart docker
- 验证加速器是否生效:
docker info | grep -A 5 "Registry Mirrors"
预期输出应显示你配置的镜像加速器地址列表。
加速效果验证: 配置完成后,执行
docker pull nginx:alpine 测试拉取速度。若下载速度明显提升(通常从几分钟缩短至几十秒),则说明加速器配置成功。
2.4 环境验证流程图
以下 SVG 图展示了从安装到验证的完整流程,帮助你快速定位环境准备中的关键步骤:
2.5 常见问题与排查
| 问题现象 | 可能原因 | 解决方案 |
|---|---|---|
docker: command not found |
Docker 未安装或 PATH 未包含 | 重新安装;Linux 用户需 newgrp docker 或重启终端 |
Cannot connect to the Docker daemon |
Docker 服务未运行 | Linux: sudo systemctl start docker;Desktop: 重启应用 |
permission denied |
当前用户不在 docker 组 | sudo usermod -aG docker $USER 后重新登录 |
| 镜像拉取超时 | 未配置加速器或加速器不可用 | 检查 /etc/docker/daemon.json 配置;更换加速器地址 |
| Docker Desktop 启动失败 | WSL2 / Hyper-V 未启用 | Windows: 启用 WSL2 或 Hyper-V 功能;macOS: 检查虚拟化支持 |
快速验证脚本: 执行以下命令可一次性检查 Docker 版本、Compose 版本和加速器状态:
echo "Docker: $(docker version --format '{{.Server.Version}}') | Compose: $(docker compose version --short) | Mirrors: $(docker info 2>/dev/null | grep -oP 'https?://[^"]+' | head -3 | tr '\n' ' ')"