Docker Compose 两种安装与使用方式详解(适用于 Docker 19.03 版本)

前言

在实际运维中,我们经常会遇到不同机器上 Docker 版本不一致的情况,尤其是很多生产服务器还在运行较老的 Docker Engine 版本(如 19.03.x)。这时候安装 Docker Compose 就会有两种完全不同的方式:

  • 方式一:独立二进制版(docker-compose,带连字符) ------ 经典的 Compose V1
  • 方式二:CLI 插件版(docker compose,无连字符) ------ 现代的 Compose V2/V5

本文以 Docker 19.03.15(Ubuntu 20.04)为例,详细对比这两种方式的安装、使用和特点,帮助你快速选择适合自己的方案。

1. 方式一:独立二进制版(docker-compose)

这是最传统、最兼容的方式,适用于所有 Docker 版本(甚至非常老的版本)。

安装步骤
bash 复制代码
# 下载 Compose V1 最后一个稳定版(1.29.2)
sudo curl -L https://github.com/docker/compose/releases/download/1.29.2/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 version 1.29.2, build 5becea4c
特点
  • 命令:docker-compose up -d、docker-compose --env-file .env up -d
  • 完全独立于 Docker Engine,不依赖任何插件机制
  • 支持 --env-file 多文件加载(你的需求完全满足)
  • docker info 中不会显示 compose 插件信息
  • 已被官方标记为"维护模式"(不再新增功能,但仍可正常使用)
优点
  • 兼容性极强,几乎能在任何 Docker 版本上运行
  • 安装简单、一行命令搞定
  • 不需要升级 Docker Engine
缺点
  • 命令带连字符(与新版不统一)
  • 缺少 Compose V2 的新特性(如更好的 profiles、build secrets 支持)

2. 方式二:CLI 插件版(docker compose)

这是 Docker 官方目前推荐的方式,Compose 作为 Docker CLI 的插件存在。

安装步骤(适用于 Docker 19.03+)
bash 复制代码
# 创建用户级插件目录(推荐)
mkdir -p ~/.docker/cli-plugins

# 下载最新 Compose V2(当前推荐 v5.0.1,文件较大约60MB)
curl -SL https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

# 如果下载慢,可加国内代理
# curl -SL https://ghfast.top//https://github.com/docker/compose/releases/download/v5.0.1/docker-compose-linux-x86_64 -o ~/.docker/cli-plugins/docker-compose

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

# 验证
docker compose version
# 输出:Docker Compose version v5.0.1

docker info | grep -i compose
# 输出:compose: Docker Compose (Docker Inc., v5.0.1)
特点
  • 命令:docker compose up -d、docker compose --env-file .env --env-file .env.other up -d
  • 完全集成到 Docker CLI 中
  • docker info 会明确显示 compose 插件信息(和其他机器一致)
  • 支持所有新版 Compose 特性
优点
  • 命令风格统一(docker compose、docker buildx 等)
  • 获得最新功能和安全更新
  • 官方主力维护方向
缺点
  • 二进制文件较大(60MB vs V1 的 12MB)
  • 手动安装稍复杂(需放到正确插件目录)
  • 如果 Docker 版本过老(如 <19.03),可能不被识别

对比总结表

项目 方式一(V1 独立版) 方式二(V2 插件版)
命令 docker-compose(带-) docker compose(空格)
安装难度 极简单 稍复杂(需放插件目录)
文件大小 ~12MB ~60MB
docker info 显示插件 不显示 显示 compose 插件版本
是否支持 --env-file 支持(多文件) 支持(多文件)
兼容 Docker 19.03 完美 完美
官方维护状态 维护模式(不再更新) 积极维护(持续更新)
推荐场景 快速解决、不想升级 Docker 的老服务器 追求统一体验、愿意接受新版本的团队

结论与建议

  • 如果你只想快速解决问题:强烈推荐方式一(独立二进制版)。一行命令安装,几秒钟搞定,功能完全够用。
  • 如果你追求和团队其他机器统一体验(docker info 显示插件、命令无连字符):使用方式二(插件版),效果和其他新机器完全一致。
  • 长期建议 :找机会升级 Docker Engine 到最新版(28.x+),通过 apt install docker-compose-plugin 一键安装插件,彻底告别手动操作。
相关推荐
虎头金猫2 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
分布式存储与RustFS2 天前
MinIO 官方 Docker 镜像被移除:依赖它的项目该怎么办
docker·云原生·devops·对象存储·minio·分布式存储
AI职业加油站3 天前
AI智能体应用工程师证书:政策红利下的职业新风口
大数据·运维·人工智能·学习·职场发展
codeejun3 天前
每日一Go·MySQL-5、锁机制全解析
云原生·golang
此冬歌咏3 天前
K8s 节点故障实战:优雅驱逐 31 秒,硬故障 331 秒,以及那个永远 Pending 的 Pod
运维·k8s
玉&心3 天前
通过Arthas在线诊断K8S中的内存及JVM等使用情况
docker·k8s·arthas
xing-xing3 天前
Docker容器中Nginx站点根目录网页配置访问
nginx·docker
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
赵文宇(温玉)3 天前
CoreDNS的hosts插件的缺行配置导致k8s集群异常
容器·kubernetes·rancher
guo_wen_qiang3 天前
上传本地镜像到harbor中
docker·容器·持续部署