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 -ddocker-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 -ddocker 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 一键安装插件,彻底告别手动操作。
相关推荐
微三云 - 廖会灵 (私域系统开发)25 分钟前
电商系统从单体到微服务拆分实践:拆什么、怎么拆、拆完后怎么办
微服务·云原生·架构
MXsoft61835 分钟前
平台化是智能运维发展的必然趋势吗?
运维
liuccn1 小时前
Linux 存储系统:LVM 与直接分区
linux·运维
骑上单车去旅行2 小时前
Docker Compose 命令完全指南:从构建到运维
docker·容器·eureka
xexpertS3 小时前
CI/CD 熔断机制:如何通过编排级熔断器提升开发者效率
java·linux·运维
前端Baymax3 小时前
K8s PodCrashLoopBackOff假阳性排查
云原生·容器·kubernetes
spider_xcxc3 小时前
K8s 部署学习笔记
docker·容器·kubernetes·云计算·k8s
带娃的IT创业者3 小时前
突破内存瓶颈:利用 Nvidia GPU 显存作为 Linux Swap 空间的深度实践
linux·运维·服务器·nvidia·swap·gpu显存
java_logo4 小时前
Docker Compose 部署 Apache Superset:轻松搭建开源 BI 平台
docker·开源·apache·superset·轩辕镜像·superset部署方案·docker superset
zy happy4 小时前
VMware虚拟机添加新的硬盘
java·linux·jvm·docker