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 服务
- 新建 docker-compose.yml 文件:
version: "3"
services:
hello:
image: nginx
ports:
- "8080:80"
- 启动服务:
docker compose up -d
- 打开浏览器访问 http://localhost:8080 查看效果。
练习题
- 用自己的话写出 docker-compose 和 docker compose 的主要区别。
- 你现在的 Docker 支持 docker compose 吗?如何验证?
- 如何从 docker-compose 平滑迁移到 docker compose?
一句话总结:
docker compose 是 Docker 新一代官方主推的编排命令,建议放弃老的 docker-compose,统一用新方式!
No comments to display
No comments to display