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 小时前
Docker 容器网络不通:Tomcat 无法解析 MySQL、Nginx 无法反代 Tomcat 的生产级排查与治理
网络·docker·tomcat
镜子AI10 小时前
镜子AI 技术复盘:三条自动化链路上的“停止条件“设计
运维·人工智能·自动化
tianyuanwo10 小时前
NetBox 数据库详解:当“关系型数据库”被装进一个网络运维的领域模型里
运维·数据库·netbox
螺蛳粉 螺蛳粉11 小时前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
知已难寻12 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件
huainingning13 小时前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
say_fall13 小时前
【Linux系统编程】Ext 文件系统:磁盘与存储、文件与目录、现代计算机究竟如何寻找文件
linux·运维·服务器·数据库·c++
wacsii14 小时前
【Linux进程(一)】Linux 进程初探:操作系统如何管理进程?fork() 为什么返回两次?
linux·运维·服务器
相思难忘成疾14 小时前
从零搭建 Kubernetes 1.30 集群:kubeadm 部署一主多从实战(RHEL 9.3 + Docker + flannel)
linux·运维·kubernetes
PellyKoo14 小时前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器