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

 更新时间:2026年01月08日 09:57:43   作者:牛奔  
本文以Docker 19.03.15(Ubuntu 20.04)为例,详细对比这两种方式的安装、使用和特点,帮助你快速选择适合自己的方案,感兴趣的朋友跟随小编一起看看吧

前言

在实际运维中,我们经常会遇到不同机器上 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 版本(甚至非常老的版本)。

安装步骤

# 下载 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+)

# 创建用户级插件目录(推荐)
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 一键安装插件,彻底告别手动操作。

到此这篇关于Docker Compose 两种安装与使用方案(适用于 Docker 19.03 版本)的文章就介绍到这了,更多相关Docker Compose 安装内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 使用docker搭建go环境的简单步骤

    使用docker搭建go环境的简单步骤

    最近公司里面的项目用到了Docker,正好准备学习下Golang,所以就学习Golang顺便也学习下Docker怎么用的,刚好从头开始配置下环境,这篇文章主要给大家介绍了关于使用docker搭建go环境的简单步骤,需要的朋友可以参考下
    2023-10-10
  • docker实现MySQL的主从复制

    docker实现MySQL的主从复制

    在学习项目的时候实现读写分离用到了主从复制,但是一般要实现的话需要虚拟机或服务器非常麻烦,但是docker可以完美解决这一问题,本文主要介绍了docker实现MySQL的主从复制,感兴趣的可以了解一下
    2024-01-01
  • docker安装nacos并配置数据库的全过程

    docker安装nacos并配置数据库的全过程

    这篇文章主要给大家介绍了关于docker安装nacos并配置数据库的相关资料, Nacos是SpringCloudAlibaba架构中最重要的组件,Nacos 是一个更易于帮助构建云原生应用的动态服务发现、配置和服务管理平台,文中介绍的非常信息,需要的朋友可以参考下
    2023-09-09
  • Docker出现Cannot connect to the Docker daemon. Is the docker daemon running on this host错误解决办法

    Docker出现Cannot connect to the Docker daemon. Is the docker d

    这篇文章主要介绍了Docker出现Cannot connect to the Docker daemon. Is the docker daemon running on this host错误解决办法的相关资料,需要的朋友可以参考下
    2016-12-12
  • docker 实现容器与宿主机无缝调用shell命令

    docker 实现容器与宿主机无缝调用shell命令

    这篇文章主要介绍了docker 实现容器与宿主机无缝调用shell命令的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随想过来看看吧
    2021-03-03
  • 基于alpine用dockerfile创建的tomcat镜像的实现

    基于alpine用dockerfile创建的tomcat镜像的实现

    这篇文章主要介绍了基于alpine用dockerfile创建的tomcat镜像的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-12-12
  • docker环境下java参数传递与获取

    docker环境下java参数传递与获取

    这篇文章主要为大家详细介绍了docker环境下如何实现java参数传递与获取,文中的示例代码讲解详细,具有一定的借鉴价值,需要的小伙伴可以了解下
    2025-08-08
  • docker如何部署etcd集群

    docker如何部署etcd集群

    这篇文章主要介绍了docker如何部署etcd集群问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • Docker部署MySQL主从复制的实现

    Docker部署MySQL主从复制的实现

    本文主要介绍了Docker部署MySQL主从复制的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-10-10
  • Docker容器使用方法详解

    Docker容器使用方法详解

    容器是基于镜像创建的,容器中的进程依赖于镜像中的文件,那么本篇文章我们就来深入学习容器的基本操作方法,通过示例来加深各位看官对docker容器操作的理解以及记忆,需要的朋友可以参考下
    2022-07-07

最新评论