Skip to main content

docker-compose vs docker compose:傻傻分不清?

预计阅读时间:4 分钟

一句话核心总结:
docker-compose 是独立工具,docker compose 是 Docker CLI 的子命令,本质不同,推荐用新版 docker compose


1. 历史渊源

docker-compose(连字符,独立命令)

  • 早期 Docker 官方推出的 独立 Python 工具,需要单独安装(如 pip install docker-compose 或下载安装包)。
  • 用于管理和编排多容器应用,通过 docker-compose.yml 文件定义服务。
  • 典型命令如下:
docker-compose up -d
docker-compose down

docker compose(空格,子命令)

  • Docker 20.10.0+ 引入的新方式,把 compose 功能整合进 Docker CLI。
  • 无需单独安装,随 Docker Engine 或 Docker Desktop 自动集成。
  • 典型命令如下:
docker compose up -d
docker compose down
  • 背后基于 Go 实现的 Compose V2,性能更优,兼容性更好。

2. 技术要点详细对比

对比点 docker-compose(老) docker compose(新)
位置 独立命令,独立包 Docker CLI 的子命令
安装方式 需单独安装 随 Docker 自动安装
运行底层 Python Go
Compose 版本 v1 v2(向后兼容)
维护状态 只维护安全/bug,不新功能 主力开发方向
推荐程度 不推荐新项目使用 推荐!
用法示例 docker-compose up -d docker compose up -d

3. 迁移和兼容性

  • 大多数 docker-compose.yml 文件可以直接无缝迁移到 docker compose,不用修改。
  • 部分超老的语法(比如 v1 格式的 yml)可能需要升级。
  • 推荐所有老项目运维、部署命令都切换到新格式。

4. 常见误区 ⚠️

  • 以为只是写法不同,其实实现、维护方向都不同。
  • docker compose 性能更优,是官方主推。
  • 两者可以共存,但不建议混用命令。

5. 如何查看自己环境是否支持 docker compose

docker compose version

能输出版本号就说明支持,否则建议升级 Docker。


6. Demo & 练习题

Demo:启动一个简单 nginx 服务

  1. 新建 docker-compose.yml 文件:
version: "3"
services:
  hello:
    image: nginx
    ports:
      - "8080:80"
  1. 启动服务:
docker compose up -d
  1. 打开浏览器访问 http://localhost:8080 查看效果。

练习题

  1. 用自己的话写出 docker-compose 和 docker compose 的主要区别。
  2. 你现在的 Docker 支持 docker compose 吗?如何验证?
  3. 如何从 docker-compose 平滑迁移到 docker compose?

一句话总结:
docker compose 是 Docker 新一代官方主推的编排命令,建议放弃老的 docker-compose,统一用新方式!