docker compose 是 Docker 官方提供的一个用于定义和运行多容器 Docker 应用的工具。它允许你通过一个 YAML 文件(通常命名为 docker-compose.yml)配置应用所需的多个容器、网络、存储卷等资源,然后通过一条命令一键启动、停止或管理整个应用栈,无需逐个手动手动逐个操作每个容器。

核心作用

在实际开发或部署中,一个应用往往需要多个容器配合工作(例如:Web 应用容器 + 数据库容器 + 缓存容器)。docker compose 的主要价值在于:

  1. 简化多容器管理:用一个配置文件描述所有容器的关系和参数,避免手动执行大量 docker run 命令。
  2. 保持环境一致性:配置文件可以纳入版本控制,确保开发、测试、生产环境的容器配置一致。
  3. 一键操作:通过 docker compose up 启动所有容器,docker compose down 停止并清理,操作简洁高效。

基本使用流程

  1. 编写 docker-compose.yml:定义应用的各个服务(容器)、网络、存储等。
  2. 启动应用:执行 docker compose up(加 -d 后台运行)。
  3. 管理应用:通过 docker compose ps 查看状态、docker compose logs 查看日志、docker compose restart 重启服务等。
  4. 停止应用:执行 docker compose down(可选 --volumes 清理存储卷)。

示例:用 docker compose 部署一个 Web 应用(Nginx + MySQL)

假设我们需要部署一个依赖 MySQL 数据库的 Nginx 网站,docker-compose.yml 配置如下:

关键配置说明

  • services:核心部分,每个子项代表一个容器服务(如 webdb)。
    • 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 生态中不可或缺的工具。

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐