一、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 文件定义多容器应用,实现“一键启停、自动组网、配置集中”,是开发和测试环境的利器。

更多推荐