Docker Compose 使用指南
📌 1. 什么是 Docker Compose
Docker Compose 是一个用于定义和运行多容器 Docker 应用的工具。
通过一个 compose.yaml(或 docker-compose.yml)文件,你可以:
- 定义多个服务(Service)
- 配置镜像、构建方式、端口、网络、数据卷
- 管理环境变量
- 一条命令启动/停止整个应用栈
核心理念:
> 一次定义,到处运行
📌 2. 适合使用 Docker Compose 的场景
✅ 适合: - 本地开发(前端 + 后端 + 数据库) - 微服务本地调试 -
轻量级测试环境 - CI/CD 集成测试
📌 3. Docker Compose 核心概念
🔹 Service(服务)
每个 service 通常对应一个容器(或一组相同的容器)。
🔹 Image vs Build
image:直接使用已有镜像build:基于 Dockerfile 构建镜像
🔹 Network(网络)
Compose
默认会为所有服务创建一个共享网络,服务之间可以用服务名互相访问。
🔹 Volume(数据卷)
用于数据持久化,例如数据库文件、日志、缓存等。
📌 4. compose.yaml 教学示例
version: "3.9"
services:
web:
build: .
image: express-demo:1.0
container_name: node-app
ports:
- "30080:3000"
volumes:
- .:/app
- node_modules:/app/node_modules
environment:
- NODE_ENV=development
depends_on:
- db
db:
image: mysql:8.0
container_name: mysql-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: root123
MYSQL_DATABASE: demo
ports:
- "3306:3306"
volumes:
- mysql_data:/var/lib/mysql
volumes:
mysql_data:
node_modules:📌 5. 常用 Docker Compose 命令速查
启动服务
docker compose up后台运行:
docker compose up -d停止服务
docker compose down查看状态
docker compose ps查看日志
docker compose logs
docker compose logs -f重新构建镜像并启动
docker compose up -d --build进入容器
docker compose exec web sh📌 6. 网络通信规则
在 Docker Compose 中: - 服务名 = 主机名 - 例如:web 服务可以用
mysql://db:3306 访问数据库
📌 7. Volume(数据持久化)
匿名卷
volumes:
- /app/node_modules命名卷(推荐)
volumes:
- mysql_data:/var/lib/mysql📌 8. Docker Compose vs Docker
对比 Docker Docker Compose
管理容器 单个 多个
配置方式 CLI YAML
适合场景 简单容器 完整应用栈
📌 9. Docker Compose vs Kubernetes(简要)
对比 Compose Kubernetes
目标 本地开发 生产集群
复杂度 简单 复杂
扩缩容 基本 强大
持久化 Volume PV/PVC
📌 10. 学习建议
- 先学 Docker 基础
- 掌握 Dockerfile
- 学会 Docker Compose
- 再进阶 Kubernetes
📌 11. 常见问题(FAQ)
Q:compose.yaml 和 docker-compose.yml 有区别吗?
A:功能相同,新版推荐使用 compose.yaml。
Q:改代码后需要重启吗?
A:如果挂载了源码卷(volumes),通常不需要重启。
转载请注明出处