Docker Compose 安装指南 🐳

Docker Compose

本文详细介绍了如何在不同架构的 Linux 系统上安装 Docker Compose,包括 x86_64 和 ARM 架构,并提供国内外镜像源的选择。


目录 📚


✨ Docker Compose 简介

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件配置应用服务,就可以使用单个命令创建并启动所有服务。

🌟 主要特性

  • 🚀 简化多容器应用部署:使用简单的 YAML 文件定义复杂的多容器应用
  • 🔄 环境隔离:支持为不同环境(开发、测试、生产)创建独立的配置
  • 📦 服务依赖管理:自动处理服务之间的依赖关系和启动顺序
  • 快速扩展:轻松扩展服务的实例数量
  • 🔧 开发效率:提供热重载、日志聚合等开发友好功能
  • 🌐 跨平台兼容:支持 Linux、Windows 和 macOS 平台

官方资源


🚀 一、Linux x86_64 架构安装

1. FnOS GitHub 官方源安装

1
2
3
4
# 下载最新版本的 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
docker-compose version

2. FnOS 国内镜像源安装

1
2
3
4
# 使用国内镜像下载 Docker Compose
sudo curl -L "https://mirror.azure.cn/docker-toolbox/linux/compose/v2.29.2/docker-compose-linux-x86_64" -o /usr/local/bin/docker-compose && \
sudo chmod +x /usr/local/bin/docker-compose && \
docker-compose version
  • 验证安装
1
ls -la /usr/local/bin/docker-compose

3. Debian GitHub 官方源安装

1
2
3
4
# 下载最新版本的 Docker Compose
sudo curl -L "https://github.com/docker/compose/releases/latest/download/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose && \
sudo chmod +x /usr/bin/docker-compose && \
docker-compose version

4. Debian 国内镜像源安装

1
2
3
4
# 使用国内镜像下载 Docker Compose
sudo curl -L "https://mirror.azure.cn/docker-toolbox/linux/compose/v2.29.2/docker-compose-linux-x86_64" -o /usr/bin/docker-compose && \
sudo chmod +x /usr/bin/docker-compose && \
docker-compose version
  • 验证安装
1
ls -la /usr/bin/docker-compose

5. 卸载旧版本

1
2
3
4
5
6
7
8
9
# 删除现有 Docker Compose
sudo rm -rf /usr/local/bin/docker-compose
sudo rm -rf /usr/bin/docker-compose

# 确认已删除
which docker-compose || echo "Docker Compose 已成功移除"

# 同时删除自动补全文件(如果存在)
sudo rm -f /etc/bash_completion.d/docker-compose

🍓 二、iStoreOS (ARM 架构) 安装

1️⃣ 确定系统架构

在安装前,请先确定您的系统架构:

1
2
3
4
5
6
7
8
9
10
# 查看系统架构
uname -m

# 可能的输出:
# - x86_64: Intel/AMD 64位架构
# - aarch64: ARM 64位架构
# - armv7l: ARM 32位架构

# 查看系统详细信息
cat /etc/os-release

2️⃣ ARM64 (aarch64) 架构安装

从 GitHub 官方源安装

1
2
3
4
5
6
7
8
9
# 下载 ARM64 版本的 Docker Compose
COMPOSE_VERSION="v2.29.2"
sudo wget -O /usr/local/bin/docker-compose "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-aarch64"

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

# 验证安装
ls -la /usr/local/bin/docker-compose

使用国内镜像加速安装

1
2
3
4
5
6
7
8
9
# 使用国内镜像下载 ARM64 版本
COMPOSE_VERSION="v2.29.2"
sudo wget -O /usr/local/bin/docker-compose "https://mirror.azure.cn/docker-toolbox/linux/compose/${COMPOSE_VERSION}/docker-compose-linux-aarch64"

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

# 验证文件
file /usr/local/bin/docker-compose

3️⃣ ARMv7 (armv7l) 架构安装

1
2
3
4
5
6
7
8
9
# 对于 ARMv7 架构,需要使用不同的二进制文件
COMPOSE_VERSION="v2.29.2"
sudo wget -O /usr/local/bin/docker-compose "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-armv7"

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

# 验证安装
docker-compose --version

4️⃣ 卸载旧版本

1
2
3
4
5
6
# 删除现有 Docker Compose
sudo rm -rf /usr/local/bin/docker-compose
sudo rm -rf /usr/bin/docker-compose

# 确认已删除
which docker-compose || echo "Docker Compose 已成功移除"

🔍 三、验证安装

1️⃣ 检查 Docker Compose 版本

1
2
3
4
5
6
7
8
# 查看 Docker Compose 版本
docker-compose --version

# 或者使用更详细的版本信息
docker-compose version

# 检查 Docker Compose 是否正常工作
docker-compose --help | head -10

2️⃣ 测试 Docker Compose 功能

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 创建一个简单的测试配置
mkdir -p /tmp/test-compose && cd /tmp/test-compose

cat > docker-compose.yml << 'EOF'
version: '3.8'
services:
hello-world:
image: hello-world
container_name: test-hello-world
EOF

# 运行测试
docker-compose up

# 查看容器状态
docker-compose ps

# 停止并移除容器
docker-compose down

# 清理测试文件
cd ~ && rm -rf /tmp/test-compose

3️⃣ 验证架构兼容性

1
2
3
4
5
6
# 检查 Docker Compose 二进制文件的架构
file $(which docker-compose)

# 检查系统架构与 Docker Compose 是否匹配
echo "系统架构: $(uname -m)"
echo "Docker Compose 架构: $(file $(which docker-compose) | grep -o 'ELF [^,]*' | cut -d' ' -f2)"

⚙️ 四、高级配置和优化

1️⃣ 设置命令自动补全

1
2
3
4
5
6
7
8
9
10
11
# 为 Docker Compose 设置 Bash 自动补全
COMPOSE_VERSION=$(docker-compose version --short)
sudo curl -L "https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose" -o /etc/bash_completion.d/docker-compose

# 重新加载 Bash 配置
source /etc/bash_completion.d/docker-compose

# 对于当前用户,也可以安装到用户目录
curl -L "https://raw.githubusercontent.com/docker/compose/${COMPOSE_VERSION}/contrib/completion/bash/docker-compose" -o ~/.docker-compose-completion.bash
echo "source ~/.docker-compose-completion.bash" >> ~/.bashrc
source ~/.bashrc

2️⃣ 创建别名简化命令

1
2
3
4
5
6
7
8
9
10
11
12
# 在 ~/.bashrc 或 ~/.zshrc 中添加别名
echo "alias dc='docker-compose'" >> ~/.bashrc
echo "alias dcup='docker-compose up -d'" >> ~/.bashrc
echo "alias dcdown='docker-compose down'" >> ~/.bashrc
echo "alias dclogs='docker-compose logs -f'" >> ~/.bashrc
echo "alias dcpull='docker-compose pull'" >> ~/.bashrc
echo "alias dcbuild='docker-compose build'" >> ~/.bashrc
echo "alias dcrestart='docker-compose restart'" >> ~/.bashrc
echo "alias dcps='docker-compose ps'" >> ~/.bashrc

# 重新加载配置
source ~/.bashrc

3️⃣ 使用 Docker Compose V2

Docker Compose V2 是作为 Docker CLI 插件提供的,安装方法略有不同:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 创建 Docker CLI 插件目录
mkdir -p ~/.docker/cli-plugins

# 下载 Docker Compose V2
COMPOSE_VERSION="v2.29.2"
curl -SL "https://github.com/docker/compose/releases/download/${COMPOSE_VERSION}/docker-compose-linux-$(uname -m)" -o ~/.docker/cli-plugins/docker-compose

# 添加执行权限
chmod +x ~/.docker/cli-plugins/docker-compose

# 验证安装
docker compose version

# 设置系统级安装(可选)
sudo mkdir -p /usr/local/lib/docker/cli-plugins
sudo cp ~/.docker/cli-plugins/docker-compose /usr/local/lib/docker/cli-plugins/

4️⃣ 配置 Docker Compose 环境

1
2
3
4
5
6
7
8
# 设置 Docker Compose 环境变量
echo "export COMPOSE_HTTP_TIMEOUT=120" >> ~/.bashrc
echo "export COMPOSE_PARALLEL_LIMIT=10" >> ~/.bashrc
echo "export COMPOSE_FILE=docker-compose.yml:docker-compose.override.yml" >> ~/.bashrc
echo "export COMPOSE_PROJECT_NAME=myproject" >> ~/.bashrc

# 重新加载配置
source ~/.bashrc

🔧 五、故障排除

❓ 常见问题及解决方案

  1. 权限不足错误

    1
    2
    3
    4
    5
    6
    # 确保有足够的权限执行命令
    sudo chmod +x /usr/local/bin/docker-compose

    # 或者将用户添加到 docker 组
    sudo usermod -aG docker $USER
    newgrp docker
  2. 架构不匹配错误

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # 检查系统架构
    uname -m

    # 根据架构下载正确的版本
    ARCH=$(uname -m)
    if [ "$ARCH" = "x86_64" ]; then
    # 下载 x86_64 版本
    elif [ "$ARCH" = "aarch64" ]; then
    # 下载 ARM64 版本
    elif [ "$ARCH" = "armv7l" ]; then
    # 下载 ARMv7 版本
    fi
  3. 命令未找到错误

    1
    2
    3
    4
    5
    6
    7
    8
    # 检查是否在 PATH 中
    echo $PATH

    # 或者创建符号链接
    sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose

    # 检查文件是否存在
    ls -la /usr/local/bin/docker-compose
  4. 版本兼容性问题

    1
    2
    3
    4
    5
    6
    7
    8
    # 检查 Docker Engine 版本
    docker version

    # 检查 Docker Compose 版本
    docker-compose version

    # 确保 Docker Compose 版本与 Docker Engine 兼容
    # 通常最新版本的 Docker Compose 与较新版本的 Docker Engine 兼容
  5. 证书问题

    1
    2
    3
    4
    5
    # 如果遇到 SSL 证书问题,可以临时跳过验证
    sudo curl -k -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose

    # 或者使用 HTTP 替代 HTTPS
    sudo curl -L "http://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose

🐛 诊断命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 检查 Docker Compose 安装路径
which docker-compose

# 检查文件类型和架构
file $(which docker-compose)

# 检查执行权限
ls -la $(which docker-compose)

# 检查依赖库
ldd $(which docker-compose)

# 检查系统架构
uname -m

# 检查 Docker 服务状态
systemctl status docker

# 检查用户组 membership
groups $USER

# 检查 Docker Compose 版本兼容性
docker-compose version
docker version

📊 六、版本管理

1️⃣ 安装特定版本

1
2
3
4
5
6
7
8
# 安装特定版本的 Docker Compose
VERSION="2.29.2"
ARCH=$(uname -m)
sudo curl -L "https://github.com/docker/compose/releases/download/v${VERSION}/docker-compose-linux-${ARCH}" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 验证版本
docker-compose --version

2️⃣ 多版本管理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# 创建版本管理目录
mkdir -p ~/bin/docker-compose

# 下载多个版本
curl -L "https://github.com/docker/compose/releases/download/v2.29.2/docker-compose-linux-$(uname -m)" -o ~/bin/docker-compose/docker-compose-2.29.2
curl -L "https://github.com/docker/compose/releases/download/v2.28.1/docker-compose-linux-$(uname -m)" -o ~/bin/docker-compose/docker-compose-2.28.1
curl -L "https://github.com/docker/compose/releases/download/v2.27.0/docker-compose-linux-$(uname -m)" -o ~/bin/docker-compose/docker-compose-2.27.0

# 添加执行权限
chmod +x ~/bin/docker-compose/*

# 设置当前使用的版本
ln -sf ~/bin/docker-compose/docker-compose-2.29.2 /usr/local/bin/docker-compose

# 创建切换版本的脚本
cat > /usr/local/bin/dc-version << 'EOF'
#!/bin/bash
if [ $# -eq 0 ]; then
echo "可用版本:"
ls ~/bin/docker-compose/ | sed 's/docker-compose-//g'
exit 0
fi

VERSION=$1
if [ -f ~/bin/docker-compose/docker-compose-${VERSION} ]; then
ln -sf ~/bin/docker-compose/docker-compose-${VERSION} /usr/local/bin/docker-compose
echo "已切换到 Docker Compose 版本: ${VERSION}"
docker-compose --version
else
echo "错误: 版本 ${VERSION} 不存在"
exit 1
fi
EOF

chmod +x /usr/local/bin/dc-version

3️⃣ 版本升级

1
2
3
4
5
6
7
8
9
10
11
12
13
# 检查当前版本
docker-compose --version

# 备份当前版本
cp $(which docker-compose) $(which docker-compose).bak

# 下载最新版本
LATEST_VERSION=$(curl -s https://api.github.com/repos/docker/compose/releases/latest | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
sudo curl -L "https://github.com/docker/compose/releases/download/${LATEST_VERSION}/docker-compose-linux-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

# 验证新版本
docker-compose --version

🎯 总结

通过本文的指导,您已经学会了:

  • 多种架构支持:x86_64、ARM64 (aarch64) 和 ARMv7 架构的安装方法
  • 多源选择:国内外镜像源的安装方式,包括官方 GitHub 和国内镜像
  • 版本管理:安装特定版本、管理多版本和升级版本的方法
  • 故障排除:常见问题的诊断和解决方法
  • 高级配置:自动补全、别名设置、环境变量等优化配置
  • 验证方法:安装后的验证和测试方法

现在您可以开始使用 Docker Compose 来管理多容器应用了!🐳🚀

🌟 温馨提示

  1. 版本兼容性:确保 Docker Compose 版本与 Docker Engine 兼容,建议使用相同的主要版本
  2. 定期更新:定期检查并更新到最新版本以获得新功能和安全补丁
  3. 备份配置:重要的 docker-compose.yml 文件应纳入版本控制系统(如 Git)
  4. 安全考虑:从官方源或可信镜像下载,避免使用未经验证的二进制文件
  5. 文档参考:查阅官方文档了解最新功能和最佳实践
  6. 性能优化:对于生产环境,调整 COMPOSE_HTTP_TIMEOUT 和 COMPOSE_PARALLEL_LIMIT 环境变量
  7. 网络考虑:在内网环境中,可以设置本地镜像仓库加速下载
  8. 监控日志:定期检查 Docker Compose 日志,及时发现和解决问题

开始使用 Docker Compose 简化您的容器编排工作吧!🎉