Docker Compose:轻松管理多容器应用
docker compose
是 Docker 官方提供的一个用于定义和运行多容器 Docker 应用的工具。它允许你通过一个 YAML 文件(通常命名为 docker-compose.yml
)配置应用所需的多个容器、网络、存储卷等资源,然后通过一条命令一键启动、停止或管理整个应用栈,无需逐个手动手动逐个操作每个容器。
核心作用
在实际开发或部署中,一个应用往往需要多个容器配合工作(例如:Web 应用容器 + 数据库容器 + 缓存容器)。docker compose
的主要价值在于:
- 简化多容器管理:用一个配置文件描述所有容器的关系和参数,避免手动执行大量
docker run
命令。 - 保持环境一致性:配置文件可以纳入版本控制,确保开发、测试、生产环境的容器配置一致。
- 一键操作:通过
docker compose up
启动所有容器,docker compose down
停止并清理,操作简洁高效。
基本使用流程
- 编写
docker-compose.yml
:定义应用的各个服务(容器)、网络、存储等。 - 启动应用:执行
docker compose up
(加-d
后台运行)。 - 管理应用:通过
docker compose ps
查看状态、docker compose logs
查看日志、docker compose restart
重启服务等。 - 停止应用:执行
docker compose down
(可选--volumes
清理存储卷)。
示例:用 docker compose
部署一个 Web 应用(Nginx + MySQL)
假设我们需要部署一个依赖 MySQL 数据库的 Nginx 网站,docker-compose.yml
配置如下:
关键配置说明
services
:核心部分,每个子项代表一个容器服务(如web
、db
)。image
:指定容器使用的镜像。ports
:端口映射规则(主机端口:容器端口
)。volumes
:数据持久化或文件挂载(支持主机目录、命名卷等)。environment
:设置容器内的环境变量。depends_on
:定义服务启动顺序(但不保证依赖服务 “完全就绪”,仅保证启动顺序)。
networks
:定义自定义网络,使同一网络内的服务可通过服务名(如db
)通信,无需暴露端口到主机。volumes
:定义命名存储卷,用于持久化数据(容器删除后数据不丢失)。
常用命令
# 启动所有服务(后台运行加 -d)
docker compose up -d# 查看运行中的服务
docker compose ps# 查看服务日志(如查看 web 服务日志)
docker compose logs -f web# 重启所有服务
docker compose restart# 停止并删除容器、网络(保留存储卷)
docker compose down# 停止并删除容器、网络、存储卷
docker compose down --volumes
适用场景
- 本地开发环境:快速搭建包含多组件的应用(如前端 + 后端 + 数据库)。
- 小型应用部署:在单台服务器上部署多容器应用(生产环境大规模部署通常用 Kubernetes)。
- 自动化测试:配合 CI/CD 工具,快速启动测试环境。
通过 docker compose
,可以大幅简化多容器应用的配置和管理流程,是 Docker 生态中不可或缺的工具。