下面详细介绍 Docker Compose 各个命令的用法和使用场景:
🚀 核心运维命令
up - 创建并启动容器
# 基本用法
docker compose up # 前台启动
docker compose up -d # 后台启动
# 实用选项
docker compose up --force-recreate # 强制重新创建容器
docker compose up --build # 先构建镜像再启动
docker compose up --no-deps # 跳过依赖服务
docker compose up service1 service2 # 仅启动指定服务
# 使用场景
docker compose up -d # 生产环境部署
docker compose up --build # 开发环境(代码变更后)
down - 停止并清理资源
# 基本用法
docker compose down # 停止并移除容器
docker compose down -v # 同时删除数据卷
docker compose down --rmi all # 同时删除所有镜像
# 使用场景
docker compose down # 日常关闭应用
docker compose down -v # 彻底清理(含数据)
ps - 查看容器状态
# 查看运行状态
docker compose ps # 简洁视图
docker compose ps -a # 包含已停止的容器
# 使用场景
docker compose ps # 日常运维检查
docker compose ps -a # 排查问题查看历史记录
🔧 生命周期管理
start / stop / restart
# 启动已存在的容器
docker compose start # 启动所有服务
docker compose start nginx # 仅启动nginx
# 停止运行中的容器
docker compose stop # 优雅停止所有服务
docker compose stop --timeout 30 # 设置超时时间
# 重启服务
docker compose restart # 重启所有服务
docker compose restart web # 仅重启web服务
pause / unpause
# 暂停容器(不终止进程)
docker compose pause # 暂停所有服务
docker compose unpause # 恢复所有服务
📊 监控与日志
logs - 查看日志
# 查看日志
docker compose logs # 所有服务的最新日志
docker compose logs -f # 实时跟踪日志
docker compose logs --tail=100 web # 查看web服务最近100行
docker compose logs --since="2023-01-01" # 指定时间后的日志
stats - 资源统计
# 实时资源监控
docker compose stats # 所有容器资源使用情况
docker compose stats nginx # 指定容器资源
top - 查看进程
# 查看容器内进程
docker compose top # 所有容器进程
docker compose top database # 指定容器进程
⚡ 单次任务执行
run - 运行一次性命令
# 在服务中执行命令
docker compose run web bash # 在web服务中启动bash
docker compose run --rm app python manage.py migrate # 执行迁移后删除容器
exec - 在运行中容器执行命令
# 在已运行的容器中执行
docker compose exec database psql -U user # 连接数据库
docker compose exec -it web sh # 交互式shell
🛠️ 开发调试命令
build - 构建镜像
# 构建镜像
docker compose build # 构建所有服务的镜像
docker compose build --no-cache web # 不使用缓存构建web
config - 验证配置
# 检查配置文件
docker compose config # 解析并显示最终配置
docker compose config --services # 列出所有服务名称
docker compose config --volumes # 列出所有数据卷
📦 镜像管理
pull / push
# 拉取镜像
docker compose pull # 拉取所有服务所需镜像
# 推送镜像
docker compose push # 推送所有服务镜像
images - 列出镜像
# 查看项目使用的镜像
docker compose images # 简洁列表
docker compose images -q # 仅显示镜像ID
🔄 批量操作
scale - 扩缩容
# 调整实例数量
docker compose scale web=3 database=2 # 扩展到3个web,2个database
ls - 项目管理
# 列出所有Compose项目
docker compose ls # 简单列表
docker compose ls --all # 包含已停止的项目
💾 数据管理
volumes - 卷管理
# 查看数据卷
docker compose volumes # 列出自定义卷
cp - 文件传输
# 容器与宿主机间拷贝文件
docker compose cp app:/app/logs/app.log ./ # 从容器复制到宿主机
docker compose cp ./config.json app:/app/ # 从宿主机复制到容器
🎯典型工作流示例
开发环境工作流
# 首次启动
docker compose up --build -d
# 代码变更后
docker compose build web
docker compose restart web
# 查看日志
docker compose logs -f web
# 清理
docker compose down
CI/CD 流水线
# 拉取最新镜像
docker compose pull
# 重启服务
docker compose up -d
# 健康检查
docker compose ps
生产环境维护
# 滚动更新
docker compose pull
docker compose up -d
# 扩容
docker compose scale api=5
# 监控
docker compose stats
docker compose logs --tail=50
📤 publish - 发布 Compose 应用
# 将 Compose 应用打包成可分发格式
docker compose publish # 打包整个应用
docker compose publish --push-images # 同时推送镜像到仓库
# 使用场景
- 将本地开发的完整应用环境打包分享
- 创建可移植的应用包用于演示或测试
- 简化多环境部署流程
🌉 bridge - 转换为其他编排模型
# 将 Compose 文件转换为其他编排格式
docker compose bridge # 转换为默认格式
docker compose bridge convert kubernetes # 转换为 Kubernetes YAML
docker compose bridge convert swarm # 转换为 Docker Swarm 配置
# 使用场景
- 从 Docker Compose 迁移到 Kubernetes
- 生成 Swarm 栈文件
- 与其他编排工具集成
📝 commit - 从容器创建新镜像
# 基于运行中的容器提交为新镜像
docker compose commit web my-new-image:v1
docker compose commit --message "Added new feature" app
# 使用场景
- 将在容器内做的修改持久化为新镜像
- 快速 快速创建自定义镜像而不写 Dockerfile
- 保存临时的开发环境状态
📥 export - 导出容器文件系统
# 将容器文件系统导出为 tar 归档
docker compose export web > web-container.tar
docker compose export --output ./backup/ all
# 使用场景
- 备份容器中的重要数据
- 迁移容器文件系统到其他环境
- 分析容器内的文件结构
🔪 kill - 强制停止容器
# 立即强制停止容器(发送 SIGKILL)
docker compose kill # 杀死所有服务容器
docker compose kill -s SIGTERM # 发送指定信号
docker compose kill web database # 杀死指定服务
# 使用场景
- 当容器无响应时的紧急停止
- 强制执行停止操作
- 替代正常的优雅停止过程
⌛ wait - 等待容器停止
# 阻塞直到指定服务完全停止
docker compose wait # 等待所有服务停止
docker compose wait web # 仅等待 web 服务
docker compose wait --timeout 60 # 设置 设置超时时间(秒)
# 使用场景
- 自动化脚本中确保服务完全停止后再继续
- 等待数据库完成写入后停止
- 有序的服务停机序列
👁️ watch - 监视监视文件变化自动重建
# 监听文件变化并自动重建/刷新容器
docker compose watch # 监视所有服务的构建上下文
docker compose watch --no-up # 仅重建不启动
docker compose watch web # 仅监视 web 服务
# 使用场景
- 开发环境下实现热重载
- 自动检测代码变更并重新构建
- 持续 持续集成中的文件监控
📋 ls - 列出 Compose 项目
# 查看当前运行的 Compose 项目
docker compose ls # 简要列表
docker compose ls --format json # JSON 格式输出
docker compose ls --all # 包括非活动项目
# 使用场景
- 管理多个 Compose 项目的环境
- 查看哪些应用正在运行
- 清理孤立的项目
🔗 port - 查看端口绑定
# 查看服务端口的公共绑定
docker compose port web 80 # 查看 web 服务 80 端口的公开端口
docker compose port --protocol udp dns 53 # 查看 UDP 端口映射
# 使用场景
- 查找动态分配的宿主机端口
- 确认端口映射配置是否正确
- 获取服务的外部访问地址
🏷️ version - 版本信息
# 显示 Docker Compose 版本
docker compose version # 详细版本信息
docker compose version --short # 简版版本号
🔍 events - 实时事件流
# 接收容器的实时事件
docker compose events # 所有服务的事件
docker compose events --json # JSON 格式输出
docker compose events web # 仅 web 服务的事件
# 使用场景
- 监控应用的启动、停止、崩溃事件
- 调试复杂的多服务交互问题
- 收集审计日志
🗑️ rm - 删除停止的容器
# 移除已停止的服务容器
docker compose rm # 交互式删除
docker compose rm -f # 强制删除不提示
docker compose rm -v # 同时删除匿名卷
# 使用场景
- 清理旧的容器实例释放空间
- 准备重新创建服务
- 删除失败的部署尝试
✨ 实际工作流整合示例
完整开发工作流
# 1. 初始化项目
docker compose ls
# 2. 构建并启动
docker compose up --build -d
# 3. 开发过程中监控
docker compose events
docker compose logs -f web
# 4. 文件变更自动重建
docker compose watch web
# 5. 调试和检查
docker compose exec web bash
docker compose port web 80
docker compose top
# 6. 数据管理和备份
docker compose cp web:/app/data ./backup/
docker compose commit web dev-snapshot
# 7. 发布准备
docker compose publish --push-images
生产环境故障排除
# 发现问题
docker compose ps
docker compose logs --tail=20
# 紧急处理
docker compose kill unresponsive-service
docker compose wait unresponsive-service
# 恢复服务
docker compose up -d unresponsive-service
docker compose wait --timeout 120 unresponsive-service
应用迁移流程
# 从 Compose 迁移到 Kubernetes
docker compose bridge --output kubernetes > k8s-deployment.yaml
docker compose publish --push-images
以上涵盖了所有 Docker Compose 子命令的使用方法和适用场景。这些命令提供了从开发到生产的完整容器化管理能力。


评论区