一、Docker Compose简介
Docker Compose是Docker官方提供的容器编排工具,用于定义和运行多容器Docker应用。通过YAML文件声明服务、网络和卷,可一键启动复杂应用环境。
二、Windows环境安装步骤
1. 安装Docker Desktop
-
下载安装包
访问Docker官网 ,下载Windows版本安装程序。 -
运行安装程序
- 勾选 Enable WSL 2 Integration(提升性能)。
- 勾选 Use Docker Desktop as a non-root user(避免权限问题)。
-
验证安装
docker --version # 输出示例:Docker Desktop 4.24.1 docker compose version # 输出示例:Docker Compose version v2.22.0
2. 配置Windows环境
问题排查:
-
WSL 2未启用
wsl --install wsl --set-default-version 2
-
Hyper-V未启用
- 进入 控制面板 → 程序 → 启用或关闭Windows功能
- 勾选 Hyper-V 和 Windows Subsystem for Linux。
三、Docker Compose核心概念
组件 | 说明 |
---|---|
docker-compose.yml | 定义服务、网络、卷的YAML配置文件 |
服务(services) | 单个应用容器(如Nginx、MySQL) |
网络(networks) | 定义容器间通信规则 |
卷(volumes) | 持久化存储数据 |
四、基础使用流程
1. 创建项目目录
mkdir my-docker-app
cd my-docker-app
2. 编写docker-compose.yml
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "8080:80"
volumes:
- ./wwwroot:/usr/share/nginx/html
depends_on:
- redis
redis:
image: redis:alpine
ports:
- "6379:6379"
3. 启动服务
docker compose up -d # -d表示后台运行
docker compose ps # 查看运行中的容器
4. 停止服务
docker compose down # 删除容器、网络和依赖卷
五、高级配置示例
1. 环境变量分离
-
创建
.env
文件:MYSQL_ROOT_PASSWORD=root123
-
配置
docker-compose.yml
:services: mysql: environment: MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
2. 自定义网络
networks:
app_net:
driver: bridge
services:
web:
networks:
- app_net
redis:
networks:
- app_net
六、常见问题解决方案
1. 端口冲突
# 查找占用端口的进程
netstat -ano | findstr :8080
# 结束进程(替换PID为实际进程ID)
taskkill /F /PID 1234
2. 容器间通信失败
- 确保服务定义在同一网络:
networks: default: driver: bridge services: service1: networks: - default service2: networks: - default
七、企业级部署建议
-
多环境配置
# 开发环境 docker compose -f docker-compose.yml -f docker-compose.dev.yml up # 生产环境 docker compose -f docker-compose.yml -f docker-compose.prod.yml up
-
日志监控
docker compose logs -f [service_name]
-
卷管理
volumes: postgres_data: driver: local
八、命令速查表
命令 | 说明 |
---|---|
docker compose up | 启动服务(前台模式) |
docker compose up -d | 启动服务(后台模式) |
docker compose down | 停止并删除容器 |
docker compose build | 构建镜像 |
docker compose restart | 重启服务 |
docker compose exec | 进入容器终端 |
九、总结
Docker Compose通过声明式配置简化多容器应用管理,适用于开发、测试和生产环境。掌握其核心概念和命令,可显著提升容器化部署效率。