Compose 是什么
编排工具用一份声明式文件描述多容器应用:每个服务的镜像或构建方式、端口、挂载、环境变量、依赖关系都写在里面,再用一条命令统一创建与启动。它把「手工敲一串启动命令」变成可版本化、可评审、可复现的环境定义。
基本信息
| 现代用法 | 作为容器引擎的子命令使用,随引擎一起安装 |
|---|---|
| 旧用法 | 独立的单文件程序,属于早期版本,已停止维护 |
| 文件格式 | YAML,顶层以服务定义开始 |
| 校验方式 | 用配置校验子命令检查语法与解析结果 |
| 适用平台 | Linux / macOS / Windows 上的容器引擎环境 |
典型使用场景
- 本地开发环境:数据库、缓存、后端、前端一条命令全部拉起
- 测试环境复现:把整套依赖关系固化下来,换机器也能一致运行
- 小型生产部署:服务数量不多时用编排文件管理比手工命令更可靠
- 环境迁移:编排文件随代码走,迁移时只改少量环境变量
- 演示与培训:一条命令起全栈演示环境,降低上手门槛
常用命令
常用命令
docker compose version # 确认可用与版本
docker compose config --services # 校验文件并列出服务名
docker compose up -d # 后台拉起全部服务
docker compose ps # 查看各服务状态
docker compose logs -f web # 跟踪指定服务日志
docker compose down # 停止并删除容器与网络与手工命令的差别
| 对比项 | 编排文件方式 | 手工命令方式 |
|---|---|---|
| 可复现性 | 文件进版本库,结果一致 | 依赖执行历史,容易遗漏参数 |
| 批量操作 | 一条命令管理整套服务 | 逐个敲命令,顺序容易出错 |
| 网络与卷 | 声明式创建,命名有统一前缀 | 手工创建,命名容易冲突 |
| 环境差异 | 用变量文件区分环境 | 改动散落在命令与脚本里 |
| 协作成本 | 新成员看文件即可理解结构 | 需要口头交接或翻脚本 |
与上游技术的关系
- 早期工具是命令行程序的独立版本,现已停止维护,新环境不要再装
- 现代版本直接调用容器引擎的接口,构建与运行行为与手工命令更一致
- 集群编排的能力更强,适合多主机与大规模场景,本工具定位在单机多容器
- 流水线里可用它做集成测试环境,测试结束后统一清理
两种命令写法混用会出现行为差异,脚本与文档统一到现代写法,避免同一份编排在不同人手里表现不同。
编排文件里的服务名会参与容器命名与网络解析。服务名即主机名的设计让容器之间可以用服务名互访,这一点比手工维护地址省事得多。