侧边栏壁纸
博主头像
Ivan Zhang

所谓更牛,就是换个罪受

  • 累计撰写 50 篇文章
  • 累计创建 54 个标签
  • 累计收到 6 条评论

目 录CONTENT

文章目录

Docker Compose 各个命令的用法和使用场景

Ivan Zhang
2025-11-19 / 0 评论 / 0 点赞 / 5 阅读 / 5,109 字
温馨提示:
本文最后更新于 ,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
有什么问题或观点欢迎评论留言,或者 交流。
如果觉得文章对您有所帮助,可以给博主打赏鼓励一下。

下面详细介绍 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 子命令的使用方法和适用场景。这些命令提供了从开发到生产的完整容器化管理能力。

0

评论区