Docker Compose:版本演进
accttodo 12/31/2025 运维容器Docker
目录
# Docker Compose:版本演进
# 一、Docker Compose 的版本演进
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许用户通过一个 YAML 文件(通常命名为 docker-compose.yml
)来配置应用程序的服务、网络、卷等,从而简化多容器应用程序的部署和管理。Docker Compose 自 2014 年发布以来,经历了多个版本的迭代。
Docker Compose 1.x 版本
发布时间:2014 年首次发布。
特点:
- 使用 Python 编写。
- 通过
docker-compose
命令调用。 - 支持基本的编排功能,如定义服务、网络、卷等。
docker-compose.yml
文件中包含一个顶层version
元素,用于指定文件格式版本,取值范围为 2.0 至 3.8。
主要版本:
- Compose 文件格式 1:与后续格式有很大不同,缺少顶级
services
键,主要用于历史项目,新项目不推荐使用。 - Compose 文件格式 2.x:引入了
service
、network
和volume
的概念,支持定义服务的依赖关系、构建镜像、管理网络和卷等。 - Compose 文件格式 3.x:引入了许多针对 Swarm 部署的新选项,进一步增强了服务编排的能力。
- Compose 文件格式 1:与后续格式有很大不同,缺少顶级
Docker Compose 2.x 版本
发布时间:2020 年宣布发布。
特点:
- 使用 Go 语言重写,性能更优。
- 作为 Docker CLI 的插件运行,与 Docker 引擎集成更紧密。
- 通过
docker compose
命令调用(注意命令中间没有破折号)。 - 忽略
docker-compose.yml
文件中的version
顶层元素,采用滚动式的 Compose 规范。
主要改进:
- 性能优化。
- 原生支持 Kubernetes。
- 提供了向后兼容处理,以便更容易地从 Compose 1.x 迁移到 Compose 2.x。
# 二、Docker Compose 版本间的区别
安装方式
Compose 1.x:
- 是一个相对独立的命令,可以通过 pip 或直接从 GitHub 上下载其二进制文件进行安装。
- 安装完成后,可以在命令行中使用
docker-compose --version
命令来检查安装是否成功。
Compose 2.x:
- 被规划为 Docker CLI 的一部分。
- 在 Mac 和 Windows 操作系统中,安装 Docker 时即包含 Compose 2.x。
- 在 Linux 系统中,需要手动安装 Compose 2.x,但安装过程相对简单,且必须安装到指定的目录下,才能被 Docker CLI 识别并以 Docker CLI 命令模式运行。
使用习惯
Compose 1.x:
- 使用时需要显式地调用
docker-compose
命令,如docker-compose up
、docker-compose down
等。
- 使用时需要显式地调用
Compose 2.x:
- 使用时无需再显式地调用
docker-compose
命令,直接使用docker compose
命令即可,如docker compose up
、docker compose down
等。 - 这种新的使用方式使得命令更加简洁,同时也更符合 Docker CLI 的规范。
- 使用时无需再显式地调用
配置文件语法
Compose 1.x:
- 使用
links
关键字来定义容器之间的连接。 - 使用
extends
关键字来继承其他服务的配置。 - 使用
scale
命令来扩展应用程序的服务。 - 使用默认的 bridge 网络模式,容器之间会自动连接。
- 使用
build
关键字来定义构建过程中要使用的 Dockerfile 路径。
- 使用
Compose 2.x:
- 使用
depends_on
关键字来定义服务之间的启动顺序。 - 引入了新的
services
部分来定义服务,并在其中指定replicas
字段来定义要运行的实例数量。 - 引入了新的网络概念,用户可以在
networks
部分中定义网络,并在services
中指定所属的网络。 - 在
services
中使用build
关键字时,可以指定context
字段来表示构建上下文目录,以及dockerfile
字段来指定 Dockerfile 的路径。
- 使用
功能支持
Compose 1.x:
- 主要针对 Docker 早期版本进行了优化。
- 功能逐步完善,支持更多的 Docker 功能,如网络和卷。
- 在大规模生产环境中得到了广泛应用,成为实际标准。
Compose 2.x:
- 要求更高版本的 Docker 引擎支持(通常推荐与 Docker 引擎 18.06 及以上版本搭配使用)。
- 引入了新的特性和改进,如性能优化、原生支持 Kubernetes 等。
- 随着 Docker 的发展,Compose 2.x 逐渐成为主流版本。
总结来看,Docker Compose 从 1.x 版本到 2.x 版本,在安装方式、使用习惯、配置文件语法和功能支持等方面都发生了显著的变化。用户在使用时,应根据自己的实际需求选择合适的版本,并遵循最佳实践和参考官方文档。