【Docker编排】Compose多容器管理
·
一、Docker Compose 是什么?
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。
-
通过一个 YAML 文件(
docker-compose.yml) 描述整个应用的服务(如 Web、DB、Cache 等)。 -
一条命令即可启动/停止所有服务:
docker compose up # 启动 docker compose down # 停止并清理
二、为什么需要 Compose?
单个容器用 docker run 足够,但真实应用通常包含多个服务:
例如一个 Web 应用可能需要:
- Nginx(反向代理)
- Flask/Django(后端)
- PostgreSQL(数据库)
- Redis(缓存)
手动逐个启动、配置网络、挂载卷 → 繁琐且易错。
Compose 解决了多容器编排问题。
三、核心功能与优势
| 功能 | 说明 |
|---|---|
| 服务编排 | 一键启停多个关联容器 |
| 自动网络 | 默认创建专属 bridge 网络,服务可通过服务名互相访问(如 db:5432) |
| 数据持久化 | 支持声明 volumes,避免数据丢失 |
| 环境隔离 | 每个项目独立命名空间(project name),互不干扰 |
| 配置集中 | 所有参数写在 YAML 中,版本可控、可复用 |
四、简单示例:Web + DB
# docker-compose.yml
version: '3.8'
services:
web:
build: ./app # 从 Dockerfile 构建
ports:
- "8000:8000"
depends_on:
- db
environment:
- DB_HOST=db
db:
image: postgres:15
environment:
POSTGRES_DB: myapp
POSTGRES_USER: user
POSTGRES_PASSWORD: pass
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata: # 声明命名卷,数据持久化
运行:
docker compose up -d
效果:
- 自动构建
web镜像 - 启动 PostgreSQL 容器
web可通过db主机名连接数据库- 数据库数据保存在
pgdata卷中,即使容器删除也不丢
五、常用命令
| 命令 | 作用 |
|---|---|
docker compose up | 启动所有服务(前台) |
docker compose up -d | 后台启动 |
docker compose down | 停止并删除容器、网络(默认不删卷) |
docker compose logs -f web | 查看 web 服务日志 |
docker compose ps | 查看服务状态 |
六、适用场景
- 本地开发环境搭建(快速启动全套依赖)
- 测试环境部署
- 小型单机应用(如博客、内部工具)
- 不适合大规模集群(此时应使用 Kubernetes)
一句话总结:
Docker Compose 用一个 YAML 文件定义多容器应用,实现“一键启停、自动组网、配置集中”,是开发和测试环境的利器。
更多推荐


所有评论(0)