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 镜像可能速度缓慢或超时。配置镜像加速器可显著提升拉取效率。以下为配置步骤。
- 创建/编辑 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
- 重启 Docker 服务
sudo systemctl daemon-reload
sudo systemctl restart docker
- 验证加速器生效
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 用户管理。
操作步骤
- 创建 docker 用户组(若不存在)
sudo groupadd docker
- 将当前用户加入 docker 组
sudo usermod -aG docker $USER
- 重新登录或刷新用户组
# 方式一:退出当前会话并重新登录
# 方式二:使用 newgrp 命令(临时生效)
newgrp docker
- 验证非 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 引擎的核心组件架构,帮助你理解容器运行时的分层关系。
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 查看守护进程日志。