docker compose down 是什么
compose down 停止并删除本项目创建的资源:容器和项目专属网络,默认不动数据卷与镜像。它是「拆干净」的入口,也是误删数据的高发区——加了 -v 会把具名卷一并删除,数据库文件随之消失。部署升级时通常不需要 down,直接 up -d 就能滚动替换,停机时间更短。
基本信息
| 默认行为 | 停容器 + 删容器 + 删本项目网络 |
|---|---|
| -v | 连同顶层声明的具名卷与匿名卷一并删除,数据丢失 |
| --rmi all 或 local | 删除镜像,all 会删掉被其他项目共享的镜像 |
| --remove-orphans | 清理 compose 文件里已删除服务遗留的容器 |
| --timeout | 设置停止容器的等待秒数,超时后强制结束 |
典型使用场景
- 开发环境收工:停掉整栈并释放网络与容器名
- 重新初始化:测试环境需要清空数据重跑,此时才用 -v
- 清理遗留:改了 compose 文件后清掉已删除服务的孤儿容器
- 排障重置:网络配置异常时彻底重建项目网络
- 磁盘回收:确认数据已备份后,删除镜像释放空间
使用示例
使用示例
docker compose down # 停容器删容器删网络,保留数据卷
docker compose down --remove-orphans # 同时清理已删除服务的遗留容器
docker compose down --rmi local # 删除本项目构建的镜像
docker compose down -v # 危险:连数据卷一起删,数据丢失
docker compose up -d --build # 常规升级:不 down,直接重建变更部分参数影响对照
| 参数 | 容器 | 网络 | 数据卷 | 镜像 |
|---|---|---|---|---|
| down | 删除 | 删除 | 保留 | 保留 |
| down -v | 删除 | 删除 | 删除 | 保留 |
| down --rmi local | 删除 | 删除 | 保留 | 删除本地构建的 |
| down --rmi all | 删除 | 删除 | 保留 | 全部删除 |
| down --remove-orphans | 含孤儿容器 | 删除 | 保留 | 保留 |
生产环境执行 down -v 等于删数据:数据库文件就在具名卷里,删掉无法通过重新 up 恢复。执行前先确认卷名与备份状态。
想保留数据就不要加 -v;升级部署建议用 up -d --build 而不是 down 再 up,前者只替换有变化的部分,停机时间明显更短。
只停服务不删资源时用 stop 而不是 down:stop 保留容器与网络,下次 start 就能恢复现场,适合临时停服维护的场景。