Docker Compose:版本演进

12/31/2025 运维容器Docker

目录


# Docker Compose:版本演进

# 一、Docker Compose 的版本演进

Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。它允许用户通过一个 YAML 文件(通常命名为 docker-compose.yml)来配置应用程序的服务、网络、卷等,从而简化多容器应用程序的部署和管理。Docker Compose 自 2014 年发布以来,经历了多个版本的迭代。

  1. Docker Compose 1.x 版本

    • 发布时间:2014 年首次发布。

    • 特点

      • 使用 Python 编写。
      • 通过 docker-compose 命令调用。
      • 支持基本的编排功能,如定义服务、网络、卷等。
      • docker-compose.yml 文件中包含一个顶层 version 元素,用于指定文件格式版本,取值范围为 2.0 至 3.8。
    • 主要版本

      • Compose 文件格式 1:与后续格式有很大不同,缺少顶级 services 键,主要用于历史项目,新项目不推荐使用。
      • Compose 文件格式 2.x:引入了 servicenetworkvolume 的概念,支持定义服务的依赖关系、构建镜像、管理网络和卷等。
      • Compose 文件格式 3.x:引入了许多针对 Swarm 部署的新选项,进一步增强了服务编排的能力。
  2. 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 版本间的区别

  1. 安装方式

    • 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 命令模式运行。
  2. 使用习惯

    • Compose 1.x

      • 使用时需要显式地调用 docker-compose 命令,如 docker-compose updocker-compose down 等。
    • Compose 2.x

      • 使用时无需再显式地调用 docker-compose 命令,直接使用 docker compose 命令即可,如 docker compose updocker compose down 等。
      • 这种新的使用方式使得命令更加简洁,同时也更符合 Docker CLI 的规范。
  3. 配置文件语法

    • Compose 1.x

      • 使用 links 关键字来定义容器之间的连接。
      • 使用 extends 关键字来继承其他服务的配置。
      • 使用 scale 命令来扩展应用程序的服务。
      • 使用默认的 bridge 网络模式,容器之间会自动连接。
      • 使用 build 关键字来定义构建过程中要使用的 Dockerfile 路径。
    • Compose 2.x

      • 使用 depends_on 关键字来定义服务之间的启动顺序。
      • 引入了新的 services 部分来定义服务,并在其中指定 replicas 字段来定义要运行的实例数量。
      • 引入了新的网络概念,用户可以在 networks 部分中定义网络,并在 services 中指定所属的网络。
      • services 中使用 build 关键字时,可以指定 context 字段来表示构建上下文目录,以及 dockerfile 字段来指定 Dockerfile 的路径。
  4. 功能支持

    • Compose 1.x

      • 主要针对 Docker 早期版本进行了优化。
      • 功能逐步完善,支持更多的 Docker 功能,如网络和卷。
      • 在大规模生产环境中得到了广泛应用,成为实际标准。
    • Compose 2.x

      • 要求更高版本的 Docker 引擎支持(通常推荐与 Docker 引擎 18.06 及以上版本搭配使用)。
      • 引入了新的特性和改进,如性能优化、原生支持 Kubernetes 等。
      • 随着 Docker 的发展,Compose 2.x 逐渐成为主流版本。

总结来看,Docker Compose 从 1.x 版本到 2.x 版本,在安装方式、使用习惯、配置文件语法和功能支持等方面都发生了显著的变化。用户在使用时,应根据自己的实际需求选择合适的版本,并遵循最佳实践和参考官方文档。

上次更新时间: 3/27/2025, 5:08:03 PM