ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Docker Compose V2 手动安装与性能优化指南

Docker Compose V2 手动安装与性能优化指南

1. 为什么需要手动安装 Docker Compose V2

在阿里云 Linux 4.0.1 系统上,默认通过 yum 安装的 Docker 可能不包含 Compose V2 组件。Docker 官方从 2021 年开始将 Compose 作为 CLI 插件重构为 V2 版本,与传统的 python 实现的 V1 版本相比,V2 版本具有以下优势:

  • 执行效率提升 3-5 倍(基于 Go 语言重写)
  • 原生支持多平台架构(x86_64/aarch64)
  • 与 docker CLI 深度集成(使用docker compose命令)
  • 更简洁的版本管理(无需单独维护 python 环境)

注意:V1 版本使用docker-compose(带横线)命令,而 V2 版本使用docker compose(空格分隔)命令,这是最直观的区分方式。

2. 安装前的环境检查

2.1 确认系统架构

在终端执行以下命令检查 CPU 架构:

uname -m

典型输出可能是:

  • x86_64(Intel/AMD 64位)
  • aarch64(ARM 64位)

2.2 验证 Docker 安装

确保 Docker 已正确安装:

docker --version # 输出示例:Docker version 24.0.7, build afdd53b

2.3 检查现有 Compose

检查是否已安装旧版 Compose:

which docker-compose # 检查V1 docker compose version # 检查V2

3. 分步安装指南

3.1 自动安装脚本

以下是增强版的安装脚本,增加错误处理和版本验证:

#!/bin/bash # 定义安装目录 DOCKER_PLUGIN_DIR="/usr/libexec/docker/cli-plugins" # 检查架构兼容性 ARCH=$(uname -m) case "$ARCH" in x86_64) ARCH="x86_64" ;; aarch64) ARCH="aarch64" ;; *) echo "❌ 不支持的架构: $ARCH"; exit 1 ;; esac # 获取最新版本 echo "🔍 获取最新版本号..." VERSION=$(curl -fsSL https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name":' | cut -d'"' -f4) if [ -z "$VERSION" ]; then echo "❌ 获取版本号失败" exit 1 fi # 创建插件目录 echo "📁 创建插件目录..." sudo mkdir -p "$DOCKER_PLUGIN_DIR" || { echo "❌ 目录创建失败"; exit 1 } # 下载并安装 echo "⬇️ 下载 Compose V2..." sudo curl -fL "https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-linux-${ARCH}" \ -o "${DOCKER_PLUGIN_DIR}/docker-compose" || { echo "❌ 下载失败"; exit 1 } # 设置执行权限 echo "🔧 设置执行权限..." sudo chmod +x "${DOCKER_PLUGIN_DIR}/docker-compose" || { echo "❌ 权限设置失败"; exit 1 } # 验证安装 echo "✅ 安装完成,验证版本:" docker compose version

3.2 手动安装步骤

如果更喜欢分步操作:

  1. 确定架构:

    ARCH=$(uname -m) [ "$ARCH" = "x86_64" ] && ARCH="x86_64" || \ [ "$ARCH" = "aarch64" ] && ARCH="aarch64" || \ (echo "不支持的架构"; exit 1)
  2. 获取最新版本号:

    VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | \ grep '"tag_name":' | cut -d'"' -f4)
  3. 下载并安装:

    sudo mkdir -p /usr/libexec/docker/cli-plugins sudo curl -SL "https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-linux-${ARCH}" \ -o /usr/libexec/docker/cli-plugins/docker-compose sudo chmod +x /usr/libexec/docker/cli-plugins/docker-compose

4. 安装后验证

4.1 基础验证

docker compose version # 预期输出示例: # Docker Compose version v2.24.5

4.2 功能测试

创建一个测试项目验证功能:

mkdir test-compose && cd test-compose cat > docker-compose.yml <<EOF version: '3' services: web: image: nginx:alpine ports: - "8080:80" EOF docker compose up -d curl -I http://localhost:8080 docker compose down

5. 常见问题解决

5.1 权限问题

如果出现权限拒绝错误:

sudo chmod 755 /usr/libexec/docker sudo chmod 755 /usr/libexec/docker/cli-plugins

5.2 命令未找到

确保插件目录在 PATH 中:

echo 'export PATH="$PATH:/usr/libexec/docker/cli-plugins"' >> ~/.bashrc source ~/.bashrc

5.3 版本冲突

如果同时存在 V1 和 V2:

# 卸载旧版 sudo rm $(which docker-compose) # 或使用别名强制使用V2 alias docker-compose='docker compose'

6. 进阶配置

6.1 命令补全

启用 bash 自动补全:

sudo curl -L https://raw.githubusercontent.com/docker/compose/master/contrib/completion/bash/docker-compose \ -o /etc/bash_completion.d/docker-compose

6.2 多版本管理

使用 docker-cli-plugin 管理多个版本:

mkdir -p ~/.docker/cli-plugins ln -s /usr/libexec/docker/cli-plugins/docker-compose ~/.docker/cli-plugins/

7. 性能优化建议

  1. 启用 BuildKit:

    export DOCKER_BUILDKIT=1
  2. 使用并行构建:

    services: app: build: parallel: true
  3. 缓存管理:

    docker builder prune --keep-storage 2GB

提示:在阿里云环境中,建议将镜像数据目录挂载到云盘以获得更好的 I/O 性能:

sudo mkdir /data/docker sudo vi /etc/docker/daemon.json # 添加:{ "data-root": "/data/docker" } sudo systemctl restart docker

8. 实际应用案例

8.1 典型三节点服务

version: '3.8' services: web: image: nginx:alpine ports: ["80:80"] depends_on: [app] app: image: tomcat:jre11 environment: - DB_HOST=db volumes: - ./app:/usr/local/tomcat/webapps db: image: mysql:8.0 environment: MYSQL_ROOT_PASSWORD: example volumes: - db_data:/var/lib/mysql volumes: db_data:

8.2 生产级配置要点

  1. 资源限制:

    services: app: deploy: resources: limits: cpus: '0.50' memory: 512M
  2. 健康检查:

    healthcheck: test: ["CMD", "curl", "-f", "http://localhost"] interval: 30s timeout: 10s retries: 3
  3. 日志管理:

    logging: driver: json-file options: max-size: "10m" max-file: "3"

9. 维护与升级

9.1 版本升级

只需重新运行安装脚本,新版本会自动覆盖旧版本。

9.2 故障排查命令

# 查看服务日志 docker compose logs -f # 检查服务状态 docker compose ps # 进入容器调试 docker compose exec service_name sh

9.3 备份配置

建议将常用 compose 文件版本化:

docker compose convert > docker-compose-v3.yml

10. 安全最佳实践

  1. 避免使用 root 用户:

    services: app: user: "1000:1000"
  2. 敏感信息管理:

    # 使用 secrets echo "mypassword" | docker secret create db_password -
  3. 网络隔离:

    networks: internal: internal: true

重要安全提示:在阿里云环境中,务必配置安全组规则,仅开放必要的端口。

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进