compose down 是什么
docker compose down 停掉项目里的容器并清理资源:默认删除容器与项目网络,容器可写层里的数据随之消失。加 -v 会连具名卷一起删除。它和 stop 的区别在于,down 之后下次 up 相当于重建环境。
基本信息
| 用途 | 停止项目并按需清理容器、网络、卷、镜像 |
|---|---|
| 默认清理 | 容器与项目网络 |
| -v | 删除声明的具名卷与匿名卷,数据一并消失 |
| --rmi | local 删除本项目使用的镜像,all 删除全部镜像 |
| --remove-orphans | 清理不属于当前 compose 文件的残留容器 |
典型使用场景
- 测试环境收尾:跑完用例把整套环境一次清掉,不留残留资源
- 本地切换分支或换环境时重建干净环境
- 回收项目网络与容器,避免大量停止容器长期堆积
- 排查网络被占用类问题时清掉历史网络重新创建
- CI 流水线结束阶段清理本次运行创建的全部资源
- 重置测试数据库:在确认数据可丢的前提下用 -v 彻底重来
示例
示例
docker compose down # 停容器并删除项目网络
docker compose down --remove-orphans # 连不属于本文件的残留容器一起清理
docker compose down -v # 卷一并删除,数据库数据会被清空
docker compose down --rmi local # 顺带删掉本项目构建出的镜像
docker compose ps -a # 执行后确认没有残留容器down 与 stop 的区别
| 命令 | 容器 | 网络与卷 | 下次 up 的效果 |
|---|---|---|---|
| stop | 停止但保留 | 保留 | 沿用原容器,环境不变 |
| down | 删除 | 删除项目网络 | 重建容器与网络 |
| down -v | 删除 | 网络与卷一并删除 | 数据清空,环境全新 |
| down --rmi local | 删除 | 删除项目网络,镜像也删 | 需要重新构建镜像 |
down 只处理当前项目(按项目名匹配)的资源,其他项目不受影响,动手前确认项目名是关键一步。
数据库卷默认不在清理范围内,想连数据一起重置必须显式加 -v,这一点在测试环境重置时常被忽略,导致脏数据残留。
down 之后重新 up 会创建新网络与新容器,容器地址随之变化,任何硬编码地址的配置都会失效,跨容器访问应当用服务名。