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 一键安装插件,彻底告别手动操作。
相关推荐
翼龙云_cloud13 小时前
阿里云渠道商:如何手动一键扩缩容ECS实例?
运维·服务器·阿里云·云计算
木童66214 小时前
Kubernetes 操作管理完全指南:从陈述式到声明式,覆盖全生命周期
云原生·容器·kubernetes
DX_水位流量监测14 小时前
大坝安全监测之渗流渗压位移监测设备技术解析
大数据·运维·服务器·网络·人工智能·安全
电商API&Tina14 小时前
京东 API 数据采集接口接入与行业分析
运维·服务器·网络·数据库·django·php
不想画图15 小时前
Kubernetes(三)——组网概念和基础操作指令
云原生·容器·kubernetes
Mr_Xuhhh15 小时前
博客标题:深入理解Shell:从进程控制到自主实现一个微型Shell
linux·运维·服务器
f***241118 小时前
高效自动化管理临时文件的技术方案
运维·自动化
m0_7381207218 小时前
应急响应——知攻善防靶场Linux-1详细应急过程
linux·运维·服务器·网络·web安全·ssh
青州从事52118 小时前
20260108【mac】【brew】【docker】安装
macos·docker·eureka