安装 Docker Compose(离线)
Docker Compose 用于定义和运行多容器应用,本目录下各中间件(MySQL、Redis、Kafka 等)均采用 docker compose 部署。
对于无法访问外网的离线环境,需要在一台有网机器上提前下载 docker-compose 二进制,再拷贝到目标服务器完成安装。
Docker Compose v2 是使用 Go 语言编译的单一静态二进制文件,不依赖 Python 运行环境,拷贝到服务器即可运行,非常适合离线安装。
1. 安装准备
1.1 环境要求
- Linux x86_64 架构服务器(其他架构请下载对应版本)
- 已安装 Docker(可参照《安装 Docker》一文;Docker 25 及以上建议安装为 CLI 插件,见第 3 节)
- 一台可访问外网的机器(仅用于下载,下载完成后离线服务器全程无需联网)
1.2 下载安装包
下载地址如下:
这里我们选择安装最新版本 v5.6.1,下载 docker-compose-linux-x86_64:
curl -SL "https://github.com/docker/compose/releases/download/v5.6.1/docker-compose-linux-x86_64" -o docker-compose
若需下载指定版本,将 URL 中的
v5.6.1替换为目标版本号即可;不同平台/架构对应不同文件名,如docker-compose-darwin-x86_64(macOS)、docker-compose-windows-x86_64.exe(Windows)、arm64 等。
1.3 校验文件完整性(可选)
同时下载 checksums.txt,比对 sha256:
curl -SL "https://github.com/docker/compose/releases/download/v5.6.1/checksums.txt" -o checksums.txt
sha256sum docker-compose
grep "docker-compose-linux-x86_64" checksums.txt
1.4 上传到离线服务器
将下载的 docker-compose 通过 U 盘、scp 等方式传输到服务器任意目录(如 /opt/compose/):
scp docker-compose root@<服务器IP>:/opt/compose/
2. 分步安装法
2.1 复制文件到 /usr/local/bin
将 docker-compose 复制到 /usr/local/bin:
cp docker-compose /usr/local/bin/docker-compose
2.2 添加可执行权限
chmod +x /usr/local/bin/docker-compose
2.3 查看版本
docker-compose -v
看到版本号如 Docker Compose version v5.6.1 即安装成功。
3. 安装为 Docker CLI 插件(Docker 25+ 推荐)
Docker 25 起官方推荐使用 docker compose(子命令形式)替代独立的 docker-compose 命令,本目录各中间件文档均采用 docker compose 部署。
3.1 复制到 cli-plugins 目录
mkdir -p /usr/local/lib/docker/cli-plugins
cp docker-compose /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
3.2 验证
docker compose version
同一份二进制既可以放在
/usr/local/bin作为独立命令使用,也可以放在cli-plugins作为插件使用,两者共存互不影响。若服务器上同时部署 Harbor 等旧软件,其安装脚本会调用docker-compose独立命令,建议两种方式都配置。
4. 一键安装法
4.1 制作 install.sh
在与 docker-compose 同目录下创建 install.sh,将以下内容复制进去,保存退出:
#!/bin/sh
echo '安装 docker-compose 到 /usr/local/bin'
cp docker-compose /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
echo '安装为 docker cli 插件'
mkdir -p /usr/local/lib/docker/cli-plugins
cp docker-compose /usr/local/lib/docker/cli-plugins/docker-compose
chmod +x /usr/local/lib/docker/cli-plugins/docker-compose
echo '查看版本'
docker-compose -v
docker compose version
echo 'docker-compose 安装成功'
4.2 制作 uninstall.sh
#!/bin/sh
echo '删除独立命令'
rm -f /usr/local/bin/docker-compose
echo '删除 cli 插件'
rm -f /usr/local/lib/docker/cli-plugins/docker-compose
echo '卸载成功'
4.3 执行安装
chmod +x install.sh uninstall.sh
sh install.sh
5. 验证部署
编写一个简单的 compose 文件测试部署:
services:
web:
image: nginx:1.27
container_name: compose-test
ports:
- "8080:80"
docker compose up -d
docker compose ps
curl http://localhost:8080
docker compose down
离线环境下 compose 只负责编排,镜像仍需提前在有网机器上
docker save导出、在离线服务器docker load导入,具体可参照本目录各中间件的构建文档。
6. 常见问题
6.1 提示 command not found
/usr/local/bin 不在 PATH 中。执行 export PATH=$PATH:/usr/local/bin,或安装到 /usr/bin:
cp docker-compose /usr/bin/docker-compose
chmod +x /usr/bin/docker-compose
6.2 提示 exec format error
二进制架构与服务器不一致(如在 aarch64 服务器上安装了 x86_64 版本)。需下载对应架构版本,文件名含 arm64 或 aarch64 的包可在 docker/compose releases 查看。
6.3 与旧版 pip 安装的 docker-compose 冲突
旧环境可能通过 pip install docker-compose 安装了 v1(Python 版),docker-compose -v 显示为 docker-compose version 1.x。可先卸载:
pip uninstall docker-compose
再按本文步骤安装 v2 二进制,或直接使用 docker compose 子命令。
6.4 未安装插件时 docker compose 报错
docker compose 子命令由 Docker CLI 插件机制加载,安装第 3 节插件即可;未安装时执行 docker compose 会提示:
docker: 'compose' is not a docker command.