Docker Compose 基础入门:零基础掌握多容器编排(附实战教程)
·
一句话理解 Docker Compose:它就像“一键部署开关”,通过一个 YAML 文件定义多个容器的依赖关系,用
docker compose up一条命令就能启动整个应用集群!
一、为什么需要 Docker Compose?
1. 传统部署的痛点
- 想运行一个 Web 应用 + MySQL 数据库 + Redis 缓存,需要手动执行多个
docker run命令 - 容器之间网络、端口、数据卷需要手动配置
- 服务依赖顺序难以控制(如数据库必须先启动)
2. Docker Compose 的价值
- 声明式配置:用 YAML 文件统一管理所有容器的配置
- 一键启动/停止:
docker compose up自动处理依赖、网络和数据卷 - 环境隔离:不同项目使用独立的网络和命名空间,互不干扰
二、安装 Docker Compose
1. 推荐安装方式(Compose v2)
# Linux 系统(需 Docker 20.10.13+)
docker compose version # 直接检查是否已集成
# 若未集成,通过包管理器升级 Docker CLI 即可自动获得
sudo apt-get update
sudo apt-get install docker-compose-plugin
2. 验证安装
docker compose version
# 输出示例:
# Docker Compose version v2.29.7
三、核心概念速览
| 概念 | 说明 |
|---|---|
| 服务 (Service) | 一个容器的抽象定义(如 Web、MySQL、Redis) |
| 项目 (Project) | 多个服务的集合(默认以 docker-compose.yml 所在目录名命名) |
| 网络 (Network) | Compose 为项目自动创建独立网络,服务间可通过服务名直接通信 |
| 卷 (Volume) | 持久化数据或共享文件夹(如数据库数据、日志) |
四、新手必学 5 个命令
1. docker compose up:启动所有服务
docker compose up -d # -d 表示后台运行
docker compose logs -f # 实时查看日志(-f 类似 tail -f)
2. docker compose down:停止并清理
docker compose down # 停止容器、网络、卷(保留数据卷)
docker compose down -v # 同时删除数据卷
3. docker compose build:构建镜像
docker compose build # 构建所有服务(需 Dockerfile)
docker compose build web # 构建指定服务
4. docker compose ps:查看服务状态
docker compose ps # 类似 docker ps,但只显示当前项目的服务
5. docker compose config:校验配置文件
docker compose config # 校验 YAML 格式并输出最终解析的配置
五、实战:用 Docker Compose 部署 Web + MySQL 应用
1. 创建 docker-compose.yml
version: '3.8' # 指定 Compose 文件格式版本
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./html:/usr/share/nginx/html
depends_on:
- db
db:
image: mysql:8.0
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: mydb
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data: # 命名卷,数据持久化
2. 目录结构
project/
├── docker-compose.yml
├── html/ # Nginx 静态文件
│ └── index.html
3. 启动服务
# 启动所有服务(后台运行)
docker compose up -d
# 验证服务状态
docker compose ps
# 访问 http://localhost:8080 查看 Nginx 默认页面
六、进阶配置技巧
1. 服务依赖顺序
depends_on:
db:
condition: service_healthy # 等待 db 健康检查通过后再启动 web
2. 环境变量管理
environment:
- DB_PASSWORD=${DB_PASSWORD} # 从 .env 文件读取值
创建 .env 文件:
DB_PASSWORD=mysecretpassword
3. 多环境配置
docker compose -f docker-compose.yml -f docker-compose.prod.yml up
七、常见问题排查
| 问题现象 | 解决方案 |
|---|---|
| 服务启动失败 | docker compose logs 查看日志,检查依赖是否就绪 |
| 端口冲突 | 修改 ports 映射(如 "8081:80") |
| 数据丢失 | 使用命名卷(如 volumes:mysql_data) |
| 配置错误 | docker compose config 校验 YAML 格式 |
八、学习路线建议
- 先掌握基础命令:
up、down、build、ps - 理解 YAML 配置结构:服务、网络、卷的定义方式
- 动手实践简单项目:如 Web + 数据库
- 学习高级特性:环境变量、多配置文件、健康检查
- 探索生产级用法:与 CI/CD 集成、安全加固
九、扩展阅读
- 官方文档:权威配置说明
- Compose 文件规范:完整字段详解
- Awesome Compose:2000+ 开源项目模板
现在就创建你的第一个 docker-compose.yml,用一条命令启动整个应用集群吧! 🐳
更多推荐

所有评论(0)