3. 基础软件安装:Docker 与 Docker Compose

服务目录平台依赖容器化技术实现环境一致性与快速部署。本章将完成 Docker 引擎、Docker Compose 的安装配置,并设置镜像加速器以提升国内网络环境下的拉取效率。

3.1 安装环境概览

本次安装基于 Ubuntu 22.04 LTS 操作系统,采用官方仓库方式安装 Docker Engine。以下为安装前需确认的环境条件:

检查项 要求 验证命令
操作系统版本 Ubuntu 20.04 / 22.04 / Debian 11+ cat /etc/os-release
内核版本 ≥ 3.10(推荐 5.x) uname -r
CPU 架构 x86_64 / arm64 uname -m
网络连通性 可访问外网或镜像仓库 ping registry.cn-hangzhou.aliyuncs.com
sudo 权限 当前用户具有 sudo 执行权限 sudo -v
提示: 若使用 CentOS 或 Rocky Linux,请将包管理器替换为 yum / dnf,并调整仓库源路径。本课程以 Ubuntu 为例,其他发行版操作步骤类似。

3.2 Docker 引擎安装步骤

采用官方推荐方式,分四步完成 Docker 引擎的安装:

  1. 卸载旧版本(如有)
  2. 安装依赖包:ca-certificates、curl、gnupg、lsb-release
  3. 添加 Docker 官方 GPG 密钥与仓库
  4. 安装 Docker Engine、containerd、Docker CLI
# 步骤 1:卸载旧版本
sudo apt-get remove docker docker-engine docker.io containerd runc

# 步骤 2:安装依赖
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release

# 步骤 3:添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 步骤 4:设置稳定版仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 步骤 5:安装 Docker 引擎
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
关键说明: 安装完成后,Docker 守护进程默认已启动。使用 sudo systemctl status docker 可查看运行状态。若需将当前用户加入 docker 用户组以避免每次使用 sudo,请执行 sudo usermod -aG docker $USER 并重新登录。

3.3 配置镜像加速器

在国内网络环境下,直接拉取 Docker Hub 镜像速度较慢。推荐配置阿里云或腾讯云镜像加速器。以下以阿里云为例,每个用户拥有独立的加速器地址。

# 创建或修改 Docker 守护进程配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
  "registry-mirrors": ["https://<your-mirror-id>.mirror.aliyuncs.com"]
}
EOF

# 重新加载配置并重启 Docker
sudo systemctl daemon-reload
sudo systemctl restart docker
注意: 请将 <your-mirror-id> 替换为你在阿里云容器镜像服务中获取的专属加速器 ID。若使用腾讯云,镜像地址格式为 https://mirror.ccs.tencentyun.com。配置完成后务必重启 Docker 守护进程。

以下 SVG 图展示了 Docker 客户端通过镜像加速器拉取镜像的完整流程:

Docker 镜像加速器拉取流程 Docker 镜像加速器拉取流程 Docker Client Docker Daemon 镜像加速器 Docker Hub 流程说明: 1. Docker Client 发送 pull 请求给 Docker Daemon。 2. Docker Daemon 优先从配置的镜像加速器拉取镜像层。 3. 若加速器缓存命中,直接返回;否则回源到 Docker Hub 拉取并缓存。

3.4 Docker Compose 安装

Docker Compose 用于定义和运行多容器应用。自 Docker Engine 23.0+ 起,Compose V2 已作为插件集成在 docker-compose-plugin 包中。若你已按 3.2 节安装 docker-compose-plugin,则无需额外操作。

若需独立安装 Compose V2 二进制文件,可执行以下命令:

# 下载最新稳定版 Docker Compose
DOCKER_CONFIG=${DOCKER_CONFIG:-$HOME/.docker}
mkdir -p $DOCKER_CONFIG/cli-plugins
curl -SL https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-x86_64 -o $DOCKER_CONFIG/cli-plugins/docker-compose

# 赋予执行权限
chmod +x $DOCKER_CONFIG/cli-plugins/docker-compose

# 验证安装
docker compose version
版本建议: 推荐使用 Compose V2(命令为 docker compose,无连字符)。V1 已停止维护。若系统中同时存在 V1 和 V2,请确保 docker compose 指向 V2 版本。

3.5 验证安装

完成上述步骤后,通过以下命令验证所有组件是否正常工作:

验证项 命令 预期输出
Docker 引擎版本 docker version --format '{{.Server.Version}}' ≥ 24.0
Docker 运行状态 sudo systemctl is-active docker active
镜像加速器生效 docker info | grep -A 1 "Registry Mirrors" 显示配置的加速器地址
Compose 版本 docker compose version Docker Compose version v2.27.0
容器运行测试 docker run hello-world 打印 Hello from Docker! 信息
# 一键验证脚本
echo "=== Docker 版本 ===" && docker version --format '{{.Server.Version}}'
echo "=== Docker 运行状态 ===" && sudo systemctl is-active docker
echo "=== 镜像加速器 ===" && docker info | grep -A 1 "Registry Mirrors"
echo "=== Compose 版本 ===" && docker compose version
echo "=== 运行测试容器 ===" && docker run --rm hello-world
验证结果: 若所有检查项均通过,说明 Docker 与 Docker Compose 已正确安装并配置镜像加速器。服务目录平台后续的容器化部署将基于此环境运行。

以下 SVG 图展示了 Docker 安装验证的完整流程与各组件关系:

Docker 安装验证流程 Docker 安装验证流程 安装完成 版本检查 状态检查 加速器验证 运行测试容器 验证顺序: 版本 → 状态 → 加速器 → 运行 hello-world 容器,全部通过即表示环境就绪。

3.6 常见问题与排查

  • 权限拒绝: 若执行 docker ps 提示 "permission denied",请将用户加入 docker 组或使用 sudo 执行。
  • 镜像拉取超时: 检查 /etc/docker/daemon.json 中镜像加速器地址是否正确,并确认网络可访问该地址。
  • Compose 命令未找到: 确认 docker-compose-plugin 已安装,或二进制文件路径在 $PATH 中。
  • 内核兼容性: 旧内核可能导致容器运行异常,建议升级至 5.x 内核。
安全提醒: 生产环境中请勿将 Docker 守护进程暴露在公网,并定期更新 Docker 版本以修复安全漏洞。配置 TLS 认证后再开启远程 API 访问。