Docker Compose 完全指南:从入门到实战
Docker Compose 是用于编排多容器应用的核心工具,通过一个
docker-compose.yml文件即可定义和运行所有关联服务。本文提供了从基础到实战的完整指南,涵盖核心优势、快速入门示例、全部命令详解(包括服务管理、镜像构建、配置验证等分类)以及多种环境下的工作流。您将掌握开发、测试和生产环境的部署技巧,学习高效调试和资源管理的最佳实践,并通过常用命令组合快速提升容器化应用的管理效率,实现真正的一键部署和环境一致性。
博主博客
一、什么是 Docker Compose?
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过一个 YAML 文件(通常是 docker-compose.yml)来配置应用程序的所有服务,然后使用简单的命令即可创建和启动所有服务。
二、核心优势
- 一键部署:使用单个命令启动多个关联容器
- 配置即代码:所有服务配置版本化,便于管理和共享
- 环境一致性:确保开发、测试、生产环境的一致性
- 服务编排:轻松管理容器间的依赖关系和启动顺序
三、快速开始
1. 安装 Docker Compose
# 检查是否已安装
docker-compose --version
# 安装 Docker Compose(Linux)
sudo curl -L "https://github.com/docker/compose/releases/download/v2.23.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
2. 创建 docker-compose.yml
version: '3.8'
services:
web:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
db:
image: postgres:13
environment:
POSTGRES_PASSWORD: example
3. 启动服务
# 启动所有服务(前台运行)
docker-compose up
# 后台启动所有服务
docker-compose up -d
# 启动特定服务
docker-compose up -d nginx
四、Docker Compose 命令详解
项目生命周期管理
| 命令 | 说明 | 常用参数 |
|---|---|---|
docker-compose up |
创建并启动容器 | -d 后台运行,--build 重新构建 |
docker-compose down |
停止并移除所有资源 | -v 同时删除卷,--rmi all 删除镜像 |
docker-compose start |
启动已存在的容器 | |
docker-compose stop |
停止运行中的容器 | |
docker-compose restart |
重启服务 |
服务操作与调试
| 命令 | 说明 | 示例 |
|---|---|---|
docker-compose exec |
在运行中的容器执行命令 | docker-compose exec nginx bash |
docker-compose run |
运行一次性命令 | docker-compose run --rm app python manage.py migrate |
docker-compose logs |
查看服务日志 | docker-compose logs -f --tail=100 nginx |
docker-compose ps |
列出所有容器状态 | docker-compose ps -a |
镜像与构建管理
| 命令 | 说明 | 示例 |
|---|---|---|
docker-compose build |
构建或重新构建服务镜像 | docker-compose build --no-cache nginx |
docker-compose pull |
拉取服务的最新镜像 | docker-compose pull |
docker-compose push |
推送服务镜像 | docker-compose push |
docker-compose images |
列出使用的镜像 |
配置与验证
| 命令 | 说明 | 示例 |
|---|---|---|
docker-compose config |
验证和查看配置 | docker-compose config -q |
docker-compose version |
显示版本信息 |
其他实用命令
| 命令 | 说明 | 示例 |
|---|---|---|
docker-compose pause/unpause |
暂停/恢复容器 | docker-compose pause nginx |
docker-compose kill |
强制停止容器 | docker-compose kill -s SIGINT nginx |
docker-compose rm |
删除已停止的容器 | docker-compose rm -f nginx |
docker-compose scale |
扩展服务实例数量 | docker-compose scale web=3 |
docker-compose top |
显示容器进程 | docker-compose top nginx |
docker-compose port |
查看端口绑定 | docker-compose port nginx 80 |
docker-compose events |
实时事件监听 | docker-compose events --json nginx |
五、实战示例集合
1. 开发环境部署
# 启动开发环境(包含热重载)
docker-compose -f docker-compose.dev.yml up
# 重新构建并启动
docker-compose up --build
# 查看实时日志
docker-compose logs -f app db
2. 数据库迁移
# 运行数据库迁移
docker-compose run --rm app python manage.py migrate
# 创建迁移文件
docker-compose run --rm app python manage.py makemigrations
3. 测试环境
# 运行测试
docker-compose run --rm app pytest
# 运行特定测试
docker-compose run --rm app pytest tests/test_api.py
4. 生产环境操作
# 使用生产配置文件
docker-compose -f docker-compose.prod.yml up -d
# 零停机更新
docker-compose pull
docker-compose up -d
六、常用工作流
1. 完整开发周期
# 1. 启动开发环境
docker-compose up -d
# 2. 查看日志
docker-compose logs -f
# 3. 进入容器调试
docker-compose exec app bash
# 4. 重新构建
docker-compose up -d --build
# 5. 清理环境
docker-compose down -v
2. 多环境管理
# 开发环境
docker-compose -f docker-compose.yml -f docker-compose.dev.yml up
# 测试环境
docker-compose -f docker-compose.yml -f docker-compose.test.yml up
# 生产环境
docker-compose -f docker-compose.yml -f docker-compose.prod.yml up
七、最佳实践与小贴士
1. 配置文件管理
# 使用环境变量文件
docker-compose --env-file .env.prod up
# 验证配置文件
docker-compose config > docker-compose.resolved.yml
2. 性能优化
# 并行构建多个服务
docker-compose build --parallel
# 仅构建缺少的镜像
docker-compose build --pull
3. 资源清理
# 清理所有未使用的资源
docker-compose down --rmi all --volumes --remove-orphans
# 删除停止的容器
docker-compose rm -fsv
4. 网络与端口
# 查看服务网络信息
docker-compose network ls
# 检查端口映射
docker-compose port app 80
八、故障排除
1. 常见问题解决
# 容器启动失败时调试
docker-compose logs --tail=50 app
# 强制重新创建容器
docker-compose up -d --force-recreate
# 检查服务状态
docker-compose ps --services
2. 调试技巧
# 进入容器调试
docker-compose exec -it app sh
# 查看容器详情
docker-compose inspect app
# 实时监控事件
docker-compose events
九、版本迁移
从 v1 到 v2/v3 的变化:
# v1 语法(已弃用)
docker-compose up
# v2+ 语法
docker compose up # 注意:去掉了连字符
总结
Docker Compose 是容器化开发不可或缺的工具,通过掌握这些命令和工作流,你可以:
- 高效管理多容器应用
- 保持开发生产环境一致
- 简化团队协作和部署流程
- 快速调试和故障排除
建议将常用的命令组合保存为脚本或 Makefile 目标,进一步提高工作效率。
学习资源推荐:
- 官方文档:https://docs.docker.com/compose/
- Compose 文件参考:https://docs.docker.com/compose/compose-file/
- 示例项目:https://github.com/docker/awesome-compose
记住:实践是最好的学习方式!从简单的项目开始,逐步尝试更复杂的配置,很快你就能熟练运用 Docker Compose 管理你的容器化应用了。
Docker Compose 完全指南:从入门到实战
https://blog.uso6.com/archives/docker-compose-wan-quan-zhi-nan-cong-ru-men-dao-shi-zhan
评论