docker compose 是什么
Compose 是使用一份声明式文件定义并运行多个关联容器的工具:服务、网络、卷、依赖关系与环境变量都写在文件里,一条命令就能把整套环境拉起来。第二版以命令行插件的形式提供,调用方式是作为子命令使用,取代了早期需要单独安装的独立程序,两者命令与参数并不完全兼容。
基本信息
| 调用方式 | 作为基础命令的子命令使用,随命令行工具一起安装 |
|---|---|
| 与旧版对照 | 旧版是独立程序且已停止维护,参数与行为存在差异 |
| 推荐文件名 | 通用的编排文件名,也兼容历史命名 |
| 常用子命令 | 启动、停止、列表、日志、执行命令、配置校验、构建、拉取、重启 |
| 依赖顺序 | 按依赖关系决定启动顺序,等待策略以健康检查为准 |
| 变量与覆盖 | 支持环境变量替换与多文件叠加,用于区分不同环境 |
典型使用场景
- 本地开发环境:一条命令拉起应用与它依赖的数据库、缓存与消息队列
- 单机部署:中小规模服务用编排文件管理多容器应用
- 演示与验收:把整套环境固化下来,交付给他人一键运行
- 测试环境准备:测试开始前一键拉起干净的依赖服务
- 配置校验:渲染并检查最终配置,确认变量替换与覆盖是否符合预期
- 批量操作:对整套服务做统一的日志查看、重启与停止
常用子命令速查
| 子命令 | 作用 | 备注 |
|---|---|---|
| up | 创建并启动服务 | 常与后台运行和构建参数搭配 |
| down | 停止并删除容器与网络 | 注意卷是否一起删除 |
| ps | 查看服务状态 | 确认是否按预期运行 |
| logs | 查看日志 | 可按服务名单独查看 |
| exec | 在运行中的服务容器内执行命令 | 与容器命令行工具用法一致 |
| config | 渲染并校验最终配置 | 排查变量替换问题最有效 |
| build 与 pull | 构建或拉取镜像 | 发布前预热的常用两步 |
基本流程
基本流程
docker compose up -d # 后台启动全部服务
docker compose ps # 查看服务状态
docker compose logs -f web # 跟随某个服务的日志
docker compose config # 渲染并校验最终配置
docker compose down # 停止并删除容器与网络
# 迁移脚本时按新版命令的帮助逐项核对比参数名两版参数不完全兼容:迁移时逐项核对而不是简单替换命令名,尤其是变量解析、重启策略与依赖等待这些行为差异。
服务器上只装了旧版却按新版文档执行命令,会报未知子命令:先确认实际版本,再决定脚本写法。
删除操作会连网络一起清理:有外部依赖的服务要注意重建后地址是否变化,必要时给网络固定名称。
渲染校验是排查配置问题最快的一步:变量没替换、覆盖没生效这类问题,看渲染结果比反复启动试错有效得多。
运维配套动作
- 把编排文件纳入版本管理,与镜像版本一起发布
- 为服务配置健康检查,启动等待参数才有实际意义
- 用环境变量文件区分环境,避免把差异写死在文件里
- 把日志与数据卷固定命名,重建时不至于丢失数据
- 定期核对运行的编排版本与实际文件是否一致