目录
docker compose down 教程:停止并删除容器、网络与 Volume
docker compose down 会停止并删除 Compose 项目的容器和网络。
语法
docker compose down [参数] [服务名称...]
| 参数 | 说明 |
|---|---|
-v, --volumes | 同时删除 compose.yaml 中声明的具名 Volume 和匿名 Volume(数据会丢失) |
--rmi local|all | 同时删除镜像。local 只删除没有自定义 tag 的镜像(由 Compose 构建),all 删除所有服务使用的镜像 |
--remove-orphans | 同时删除 compose.yaml 中已不存在的服务对应的容器 |
-t, --timeout 秒数 | 停止容器时等待的秒数(默认 10 秒) |
--dry-run | 只显示将要执行的操作 |
示例
使用 docker compose up 中的示例项目:
$ docker compose down
[+] down 4/4
✔ Container ref-compose-worker-1 Removed 0.0s
✔ Container ref-compose-web-1 Removed 0.2s
✔ Container ref-compose-cache-1 Removed 0.2s
✔ Network ref-compose_default Removed 0.0s
$ docker volume ls
DRIVER VOLUME NAME
local ref-compose_cache_data
$ docker compose up -d
[+] up 4/4
✔ Network ref-compose_default Created 0.0s
✔ Container ref-compose-worker-1 Started 0.3s
✔ Container ref-compose-cache-1 Started 0.6s
✔ Container ref-compose-web-1 Started 0.8s
$ docker compose down -v -t 1
[+] down 5/5
✔ Container ref-compose-web-1 Removed 0.1s
✔ Container ref-compose-worker-1 Removed 0.0s
✔ Container ref-compose-cache-1 Removed 0.2s
✔ Volume ref-compose_cache_data Removed 0.0s
✔ Network ref-compose_default Removed 0.0s
$ docker volume ls
DRIVER VOLUME NAME
- 不加参数的
down:删除 3 个容器和网络,Volumeref-compose_cache_data会保留。 down -v -t 1:还会删除 Volume,Redis 中的数据也会随之丢失。-t 1会让每个容器最多等待 1 秒,然后强制停止,在练习环境中可以加快操作;在生产环境中请保留默认值,让程序有时间正常结束。
如何选择 down、stop 和 rm
| 命令 | 容器 | 网络 | Volume | 用途 |
|---|---|---|---|---|
docker compose stop | 停止,保留 | 保留 | 保留 | 暂停服务,之后运行 start 恢复 |
docker compose rm | 删除已停止的容器 | 保留 | 保留 | 很少单独使用 |
docker compose down | 停止并删除 | 删除 | 保留 | 常规关闭,数据安全 |
docker compose down -v | 停止并删除 | 删除 | 删除 | 完全重新开始,例如重新初始化数据库 |
数据库初始化脚本和密码变量只会在 Volume 为空时生效,因此只有在“修改设置后想重新初始化”时才需要使用
down -v,原因请参见 MySQL。
相关章节
动手练习
练习:用一条命令停止并删除项目的容器、网络以及 Compose 自行构建的镜像,同时保留数据。
答案
docker compose down --rmi local
不加 -v,Volume 就会保留。
常见问题
docker compose down 会删除数据库中的数据吗?
不加参数**不会**,Volume 会保留,下次运行 up 时数据还在。只有加上 -v 才会删除 compose.yaml 中声明的 Volume。
down 之后镜像还在吗?
还在。要删除 Compose 构建的镜像,请用 --rmi local;要连下载的镜像也一起删除,请用 --rmi all。
只想暂时停止,不想删除容器怎么办?
使用 docker compose stop,之后运行 docker compose start 即可恢复。
更新于 2026年10月14日