Docker Compose
以下是 Docker Compose 的基础知识点总结,涵盖核心概念、配置方法及常用操作:
一、核心概念
-
定义与作用
Docker Compose 是用于定义和运行多容器 Docker 应用的工具。通过一个 YAML 文件(docker-compose.yml)配置所有服务、网络和数据卷,实现一键启动和管理。 -
核心术语
• 服务 (Service):对应一个容器实例,例如 Web 服务器、数据库等。
• 项目 (Project):由多个关联服务组成的完整应用单元。
• 网络 (Network):默认创建应用范围的网络,服务间可通过服务名通信。
二、配置文件详解
-
文件结构与版本
• 版本声明:必须指定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 -
常用配置项
• 网络与端口:ports映射宿主机端口,networks定义自定义网络。
• 数据持久化:volumes挂载宿主机目录或命名卷。
• 依赖关系:depends_on控制服务启动顺序(仅容器启动顺序,不保证应用就绪)。
• 资源限制:mem_limit限制内存,cpus限制 CPU。
三、常用命令
-
生命周期管理
• 启动服务:docker-compose up -d(后台运行)。
• 停止服务:docker-compose down(默认删除容器、网络;-v删除数据卷)。
• 重启服务:docker-compose restart。 -
状态与日志
• 查看运行状态:docker-compose ps。
• 查看日志:docker-compose logs -f [服务名](实时跟踪)。
• 进入容器:docker-compose exec [服务名] bash。 -
构建与更新
• 自定义镜像构建:build指令指定 Dockerfile 路径。
• 环境变量管理:通过.env文件统一配置敏感信息。
四、高级功能
-
多环境适配
• 使用-f指定不同配置文件(如docker-compose-prod.yml)。
• 结合env_file加载环境变量文件。 -
网络隔离
• 自定义网络实现服务间隔离通信,避免端口冲突。
• 示例:networks: frontend: driver: bridge -
数据卷管理
• 命名卷(volumes)实现数据持久化,避免容器删除后数据丢失。
五、典型应用场景
-
本地开发
快速搭建包含数据库、缓存和应用的完整环境。 -
CI/CD 流程
在自动化测试中一键部署测试环境,确保环境一致性。 -
微服务架构
管理多个微服务容器,简化依赖关系与通信配置。
六、常见问题与优化
-
权限问题
• 挂载宿主机目录时需确保容器用户权限(例如通过user: root配置)。 -
版本兼容性
• 不同 Docker Compose 版本对配置项支持不同,需匹配 Docker 引擎版本。 -
健康检查
• 添加healthcheck配置确保服务依赖就绪(需 Docker Compose v2.4+)。

浙公网安备 33010602011771号