Docker Compose多服务编排运维实战指南
什么是Docker Compose
Docker Compose是一个用于定义和运行多容器Docker应用程序的工具。通过一个YAML文件(docker-compose.yml),您可以一次性配置应用的所有服务、网络和卷,并通过简单的命令实现一键启动、停止和重建整个应用栈。
多服务编排的典型场景
在IDC环境或云数据中心中,常见的多服务编排场景包括:
- Web应用+数据库+缓存:例如Nginx + PHP-FPM + MySQL + Redis。
- 微服务架构:多个独立服务通过内部网络通信,如订单服务、用户服务、网关服务。
- 开发测试环境:快速搭建与生产环境一致的依赖服务,提升开发效率。
核心运维操作与最佳实践
1. 基本命令
- 启动服务:
docker compose up -d - 停止服务:
docker compose down - 查看日志:
docker compose logs -f - 重建服务:
docker compose build && docker compose up -d
2. 数据持久化
使用命名卷(named volumes)或绑定挂载(bind mounts)保存数据库等有状态服务的数据。例如:
services:
db:
image: mysql:8
volumes:
- db_data:/var/lib/mysql
volumes:
db_data:避免因容器重建导致数据丢失。
3. 日志与监控
推荐将容器日志集中收集到ELK或Loki等日志系统。在docker-compose.yml中可限制日志大小:
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"结合Prometheus + cAdvisor采集容器资源指标,实现主动告警。
4. 网络配置
默认情况下,Compose会创建一个bridge网络,所有服务可通过服务名互相访问。如需固定IP或自定义网络,可显式定义:
networks:
mynetwork:
driver: bridge
ipam:
config:
- subnet: 172.20.0.0/165. 健康检查与自动重启
在服务配置中添加healthcheck和restart: always,确保服务异常时自动恢复:
services:
web:
image: nginx
restart: always
healthcheck:
test: ["CMD", "curl", "-f", "http://localhost"]
interval: 30s
timeout: 10s
retries: 3生产环境注意事项
- 版本管理:将docker-compose.yml纳入版本控制(Git),与代码一同管理。
- 环境变量:使用
.env文件或外部配置中心管理敏感信息(如数据库密码)。 - 资源限制:通过
deploy.resources限制CPU/内存,避免单个服务消耗过多主机资源。 - 编排工具升级:Docker Compose已整合到Docker CLI中(
docker compose插件),建议持续更新Docker引擎版本。
总结
Docker Compose凭借简单的YAML定义和高效的命令行操作,已成为多服务场景下本地开发与小型生产环境的首选编排工具。运维人员应掌握其核心命令、数据持久化、健康检查及日志监控等最佳实践,以提升IDC内应用部署的稳定性和可维护性。