什么是 Docker Compose?
一、核心定义
Docker Compose 是 Docker 官方推出的多容器编排工具,用来一次性管理一组关联的容器服务。
简单说:
- 单独
docker run只能启动单个容器; - Compose 通过一个配置文件(
docker-compose.yml)定义多个容器、网络、数据卷、依赖关系,一条命令就能批量创建 / 启动 / 停止整套服务。
适用场景:本地开发、测试、小型单机部署(不适合集群大规模生产,集群用 Kubernetes)。
二、核心作用
- 统一配置管理 所有服务参数(镜像、端口、环境变量、挂载目录、依赖)写在
docker-compose.yml,不用记一长串docker run参数。 - 一键启停整套服务 比如前端 + 后端 + MySQL + Redis,一条命令全部启动、停止、重启。
- 自动处理容器依赖 通过
depends_on指定启动顺序(先启动数据库,再启动应用)。 - 内置网络互通 Compose 会自动创建专属网桥,同一项目下容器可直接用服务名互相访问,不用手动配置 IP。
- 统一数据卷、环境变量管理 支持
.env文件批量管理环境变量,统一持久化存储配置。
三、核心文件:docker-compose.yml
标准 YAML 格式,基础结构:
# 版本(新版 Compose 可省略 version)
version: "3.8"
# 定义所有服务(容器)
services:
# MySQL 服务,服务名 mysql
mysql:
image: mysql:8.0
ports:
- "3306:3306"
environment:
MYSQL_ROOT_PASSWORD: 123456
volumes:
- mysql_data:/var/lib/mysql
restart: always
# 后端应用,依赖 mysql
app:
image: my-backend:latest
ports:
- "8080:8080"
depends_on:
- mysql # 等待 mysql 容器先启动
env_file: .env
# 数据卷,持久化数据库数据
volumes:
mysql_data:
四、常用基础命令
# 1. 根据yml创建并启动所有容器(后台运行) docker-compose up -d # 2. 查看运行容器 docker-compose ps # 3. 查看实时日志 docker-compose logs -f # 4. 停止服务,不删除容器/数据卷 docker-compose stop # 5. 停止并删除容器、网络(保留数据卷) docker-compose down # 6. 停止并删除容器、网络、数据卷 docker-compose down -v # 7. 重启指定服务 docker-compose restart app # 8. 构建自定义镜像并启动 docker-compose up -d --build
五、Docker Compose V1 / V2 区别
- V1:独立二进制
docker-compose(横杠分隔),需要单独安装; - V2:整合进 Docker 主命令
docker compose(空格分隔),新版 Docker Desktop / Docker Engine 自带,无需额外安装,功能完全兼容并增强。
现在推荐使用:docker compose(无横杠)。
六、适用与不适用场景
✅ 适合
- 本地开发环境(项目多服务一键搭建)
- 单机小型服务部署(博客、后台、测试环境)
- CI/CD 测试流水线快速拉起整套环境
❌ 不适合
- 多服务器集群、大规模生产负载均衡、弹性扩缩容 这类场景使用 Kubernetes(K8s)。
七、一句话总结
Docker Compose = 单机多容器一键编排工具,用 yaml 文件描述整套微服务,简化多容器项目的部署与运维,是开发调试最常用的 Docker 配套工具。
