Docker Compose

以下是 Docker Compose 的基础知识点总结,涵盖核心概念、配置方法及常用操作:


一、核心概念

  1. 定义与作用
    Docker Compose 是用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件(docker-compose.yml)配置所有服务、网络和数据卷,实现一键启动和管理。

  2. 核心术语
    服务 (Service):对应一个容器实例,例如 Web 服务器、数据库等。
    项目 (Project):由多个关联服务组成的完整应用单元。
    网络 (Network):默认创建应用范围的网络,服务间可通过服务名通信。


二、配置文件详解

  1. 文件结构与版本
    版本声明:必须指定 version(推荐 '3.8' 及以上),不同版本功能差异较大。
    服务定义:所有服务在 services 下列出,包括镜像、端口映射、环境变量等。
    示例片段

    version: '3.8'
    services:
      web:
        image: nginx:latest
        ports:
          - "80:80"
      db:
        image: mysql:8.0
        environment:
          MYSQL_ROOT_PASSWORD: password
    
  2. 常用配置项
    网络与端口ports 映射宿主机端口,networks 定义自定义网络。
    数据持久化volumes 挂载宿主机目录或命名卷。
    依赖关系depends_on 控制服务启动顺序(仅容器启动顺序,不保证应用就绪)。
    资源限制mem_limit 限制内存,cpus 限制 CPU。


三、常用命令

  1. 生命周期管理
    启动服务docker-compose up -d(后台运行)。
    停止服务docker-compose down(默认删除容器、网络;-v 删除数据卷)。
    重启服务docker-compose restart

  2. 状态与日志
    查看运行状态docker-compose ps
    查看日志docker-compose logs -f [服务名](实时跟踪)。
    进入容器docker-compose exec [服务名] bash

  3. 构建与更新
    自定义镜像构建build 指令指定 Dockerfile 路径。
    环境变量管理:通过 .env 文件统一配置敏感信息。


四、高级功能

  1. 多环境适配
    • 使用 -f 指定不同配置文件(如 docker-compose-prod.yml)。
    • 结合 env_file 加载环境变量文件。

  2. 网络隔离
    • 自定义网络实现服务间隔离通信,避免端口冲突。
    • 示例:

    networks:
      frontend:
        driver: bridge
    
  3. 数据卷管理
    • 命名卷(volumes)实现数据持久化,避免容器删除后数据丢失。


五、典型应用场景

  1. 本地开发
    快速搭建包含数据库、缓存和应用的完整环境。

  2. CI/CD 流程
    在自动化测试中一键部署测试环境,确保环境一致性。

  3. 微服务架构
    管理多个微服务容器,简化依赖关系与通信配置。


六、常见问题与优化

  1. 权限问题
    • 挂载宿主机目录时需确保容器用户权限(例如通过 user: root 配置)。

  2. 版本兼容性
    • 不同 Docker Compose 版本对配置项支持不同,需匹配 Docker 引擎版本。

  3. 健康检查
    • 添加 healthcheck 配置确保服务依赖就绪(需 Docker Compose v2.4+)。

posted @ 2025-03-27 15:06  千陌666  阅读(87)  评论(0)    收藏  举报