docker compose down 是专为停止服务并删除关联容器和默认网络设计的核心命令,它自动完成停容器、删容器、移除自定义网络,无需先 stop 再 rm;加 --volumes 可删除命名卷,加 --rmi local 可删除本地构建镜像,组合使用可实现开发环境一键重置。

docker compose down 就是专为这个目的设计的核心命令,它会停止所有服务,并删除关联容器和默认网络。
关键点在于:默认行为已覆盖“停止服务 + 删除容器”
只要你当前目录下有有效的 docker-compose.yml,运行这一条命令就能完成基础清理:
docker compose down
它会自动:
- 停止所有正在运行的服务容器
- 删除这些容器实例
- 移除由 Compose 自动创建的自定义桥接网络
不需要先 stop 再 rm,也不用逐个指定容器名——这是 Compose 区别于原生 docker 命令的重要优势。
如果你想更彻底地清理(比如删掉数据卷)
默认情况下,down 不会动命名卷(named volumes),这是为了保护数据库等持久化数据。但开发或测试时,你往往需要连卷一起清掉:
docker compose down --volumes
这条命令额外增加一步:
- 遍历
docker-compose.yml中volumes:下声明的命名卷,并全部删除 - 注意:若卷正被其他容器使用,Docker 会跳过,防止误删
常见搭配场景:
- 重置本地数据库状态(如 PostgreSQL 或 MySQL 卷)
- CI/CD 流水线中确保每次构建环境干净
- 调试时排除旧配置或缓存干扰
如果你还想顺手清理镜像(释放磁盘空间)
容器删了,镜像可能还留着。这时候加上 --rmi 参数:
docker compose down --rmi local
只删 build: 构建出来的本地镜像,安全常用。
docker compose down --rmi all
尝试删所有服务用到的镜像(包括 image: nginx:alpine 这类拉取的),但注意:如果镜像被其他项目复用,Docker 会跳过,不会强制删除。
推荐组合(开发环境一键重置):
docker compose down --volumes --rmi local
补充说明:和 docker compose rm 的区别
-
docker compose rm只处理已停止的容器,不处理网络、卷、镜像,也不停服务 -
docker compose down是完整生命周期终止操作:停服务 → 删容器 → 删网络 →(可选)删卷/镜像
所以日常清理,优先用 down;只有在容器异常卡死、down 失败时,才考虑 rm -f 强制清理残留。
注:所有操作均基于当前目录下的 docker-compose.yml,请确认文件存在且语法正确。











