Docker Compose 完全指南
Docker Compose 完全指南
一条命令,编排整个应用。
Docker Compose 是 Docker 官方提供的多容器编排工具,通过一个 YAML 文件定义和管理多个容器化服务,是现代开发、测试、CI/CD 乃至轻量生产环境的核心基础设施。
为什么写这份指南?
- 网上资料碎片化严重,版本混杂(V1 / V2 / Compose Specification)
- 官方文档偏重 API 参考,缺乏业务场景驱动的系统讲解
- 很多团队会用 Compose,但不会用好 Compose
本教程共 15 章,每章 200–500 行,力求可读、可运行、可落地。
读者对象
| 层级 | 你可能是… | 能获得什么 |
|---|---|---|
| 初学者 | 刚接触 Docker,想编排多容器 | 系统入门,建立正确心智模型 |
| 中级开发者 | 已有 Compose 经验,想更进一步 | 网络、卷、环境管理、多环境方案 |
| DevOps / SRE | 需要生产级编排与可观测性 | Swarm 部署、日志、监控、CI/CD 集成 |
章节目录
| 章节 | 主题 | 关键词 |
|---|---|---|
| 第 1 章 · 简介 | Compose 概念、版本演进、vs Kubernetes | 概念入门 |
| 第 2 章 · 安装 | 安装方式、V2 vs V1、验证 | 环境准备 |
| 第 3 章 · 基础 | services / image / ports / volumes | 基础语法 |
| 第 4 章 · 网络 | 默认网络、自定义网络、外部网络 | 网络隔离 |
| 第 5 章 · 数据卷 | named volumes / bind mounts / tmpfs | 持久化 |
| 第 6 章 · 环境变量 | .env / environment / env_file | 配置管理 |
| 第 7 章 · 依赖与健康检查 | depends_on / healthcheck / restart | 启动顺序 |
| 第 8 章 · 构建 | build context / Dockerfile / 多阶段构建 | 自定义镜像 |
| 第 9 章 · 多环境管理 | override 文件 / profiles / 变量替换 | 多环境 |
| 第 10 章 · 敏感信息 | secrets / configs / Docker Secrets | 安全管理 |
| 第 11 章 · Swarm 部署 | deploy / replicas / update_config | 容器编排 |
| 第 12 章 · 日志 | logging driver / 集中式日志 | 日志治理 |
| 第 13 章 · 监控 | cAdvisor / Prometheus / Grafana | 可观测性 |
| 第 14 章 · 故障排查 | 常见问题 / 调试技巧 | 问题解决 |
| 第 15 章 · 最佳实践 | 项目结构 / 生产规范 / CI/CD | 工程规范 |
环境要求
| 工具 | 最低版本 | 推荐版本 |
|---|---|---|
| Docker Engine | 20.10+ | 26.x |
| Docker Compose | V2 (2.20+) | 最新版 (作为 Docker CLI 插件) |
| 操作系统 | Linux / macOS / Windows (WSL2) | Linux (Ubuntu 22.04+) |
约定说明
- 所有示例均经过实际验证,可直接复制运行
- 代码块标注语言类型:
yaml、bash、dockerfile等 - 关键概念用 粗体 标注,术语首次出现附英文
- ⚠️ 标记表示注意事项/易踩坑点
- 💡 标记表示最佳实践/实用技巧
快速开始
如果你已经安装了 Docker,可以立即体验:
# 创建项目目录
mkdir my-first-compose && cd my-first-compose
# 创建 docker-compose.yml
cat > docker-compose.yml << 'EOF'
services:
web:
image: nginx:alpine
ports:
- "8080:80"
redis:
image: redis:7-alpine
EOF
# 启动所有服务
docker compose up -d
# 查看运行状态
docker compose ps
# 清理
docker compose down