3. Docker 与 Docker Compose 安装

Docker 是支付系统中间件部署的核心容器引擎,Docker Compose 则用于定义和运行多容器应用。本章将指导你完成 Docker CE 安装、Docker Compose 安装、镜像加速器配置以及非 root 用户管理 Docker 的完整流程。

3.1 Docker CE 安装

Docker CE(Community Edition)是免费且功能完整的容器运行时。以下以 Ubuntu 22.04 LTS 为例,展示标准安装步骤。

步骤 命令/操作 说明
1 sudo apt update 更新包索引
2 sudo apt install ca-certificates curl gnupg lsb-release 安装依赖工具
3 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 添加 Docker 官方 GPG 密钥
4 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 添加 Docker 软件源
5 sudo apt update 更新包索引(含 Docker 源)
6 sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin 安装 Docker CE 及相关组件
7 sudo systemctl enable docker && sudo systemctl start docker 设置开机自启并启动 Docker 服务
8 docker --version 验证安装版本
验证提示: 执行 sudo docker run hello-world 可快速验证 Docker 引擎是否正常工作。若看到 "Hello from Docker!" 信息,则安装成功。

3.2 Docker Compose 安装

Docker Compose 用于定义和运行多容器应用。推荐使用 Docker 官方提供的 docker compose plugin(已随 Docker CE 安装),也可独立安装二进制版本。

方式一:使用 Docker Compose Plugin(推荐)

在步骤 6 中已安装 docker-compose-plugin,可直接使用 docker compose 命令(注意中间有空格)。

docker compose version
# 输出示例:Docker Compose version v2.24.0

方式二:独立安装 Docker Compose 二进制

适用于需要特定版本或非 Ubuntu 系统。

# 下载指定版本(以 v2.24.0 为例)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose

# 赋予执行权限
sudo chmod +x /usr/local/bin/docker-compose

# 验证安装
docker-compose --version
版本兼容性注意: 支付系统生产环境建议使用 Docker Compose v2.20+ 版本,确保对 --profile、--with-registry-auth 等特性的完整支持。避免使用 v1 版本(已停止维护)。

3.3 镜像加速器配置

在国内网络环境下,直接拉取 Docker Hub 镜像可能速度缓慢或超时。配置镜像加速器可显著提升拉取效率。以下为配置步骤。

  1. 创建/编辑 Docker 守护进程配置文件
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<- 'EOF'
{
  "registry-mirrors": [
    "https://docker.m.daocloud.io",
    "https://dockerproxy.com",
    "https://docker.nju.edu.cn"
  ]
}
EOF
  1. 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
  1. 验证加速器生效
docker info | grep -A 5 "Registry Mirrors"
# 输出应显示已配置的镜像加速器地址列表
加速器选择建议: 推荐配置 2-3 个备用镜像源。若某个加速器不可用,Docker 会自动尝试下一个。生产环境可考虑搭建私有 Harbor 仓库作为一级镜像缓存,进一步加速部署。

3.4 非 root 用户管理 Docker

默认情况下,Docker 守护进程绑定到 Unix socket(/var/run/docker.sock),该 socket 属于 root 用户和 docker 组。普通用户执行 docker 命令需加 sudo,可通过以下配置实现非 root 用户管理。

操作步骤

  1. 创建 docker 用户组(若不存在)
sudo groupadd docker
  1. 将当前用户加入 docker 组
sudo usermod -aG docker $USER
  1. 重新登录或刷新用户组
# 方式一:退出当前会话并重新登录
# 方式二:使用 newgrp 命令(临时生效)
newgrp docker
  1. 验证非 root 权限
docker ps
# 若正常显示容器列表,则配置成功
安全风险提示: 将用户加入 docker 组等同于赋予该用户 root 级别的系统权限。因为用户可以通过 docker run -v /:/host 等方式挂载宿主机文件系统。生产环境中,仅将可信的运维人员加入 docker 组,或使用 sudo 提权并配合审计日志。

3.5 Docker 环境验证与架构概览

完成上述配置后,建议执行以下验证清单,确保环境就绪。

验证项 命令 预期结果
Docker 版本 docker --version Docker version 24.0.x 或更高
Compose 版本 docker compose version Docker Compose version v2.24.x
镜像加速器 docker info | grep Mirrors 显示已配置的镜像源地址
非 root 权限 docker ps(非 root 用户) 正常输出容器列表
Hello World docker run hello-world 打印欢迎信息

以下 SVG 图展示了 Docker 引擎的核心组件架构,帮助你理解容器运行时的分层关系。

Docker 引擎核心架构 Docker 客户端 docker / docker compose Docker 守护进程 (dockerd) REST API · 镜像管理 · 容器生命周期 containerd 容器运行时管理 runc OCI 容器运行时 Linux 内核 (cgroups · namespaces · UnionFS) 资源隔离 · 文件系统层 · 网络栈 说明: • Docker 客户端通过 REST API 与 dockerd 通信 • dockerd 调用 containerd 管理容器生命周期,containerd 再通过 runc 创建容器 • 镜像加速器配置在 dockerd 层,影响镜像拉取效率

3.6 常见问题与排错

问题现象 可能原因 解决方案
Cannot connect to the Docker daemon Docker 服务未启动 sudo systemctl start docker
permission denied 执行 docker 命令 用户未加入 docker 组 执行 sudo usermod -aG docker $USER 并重新登录
镜像拉取超时 镜像加速器未配置或失效 检查 /etc/docker/daemon.json 配置,更换可用镜像源
docker compose 命令未找到 未安装 docker-compose-plugin sudo apt install docker-compose-plugin
排错利器: 使用 docker system df 查看磁盘使用情况,docker events 实时监控 Docker 事件流,journalctl -u docker.service 查看守护进程日志。