Docker不支持真正的级联删除,需通过--rm、--volumes、prune命令及规范设计(如命名卷、compose down -v、label标记)主动管理资源生命周期。

Docker 本身不支持真正的“级联删除”,所谓配置级联策略,其实是通过组合使用命令参数、清理习惯和架构设计,主动控制资源生命周期,避免容器删了但卷、网络、镜像还留着。
用 --rm 启动即删容器本体
运行容器时加 --rm,容器退出后自动删除自身(不含卷、网络、镜像):
docker run --rm -d --name app nginx
⚠️ 注意:它不会动命名卷、宿主机挂载目录、自定义网络——这些得你单独处理。
删容器时顺带清匿名卷
如果容器用了 -v /data 这类匿名卷,且数据无需保留,删除时加上 --volumes:
docker rm -f --volumes myapp
批量清理所有已退出容器及其匿名卷:
docker rm -f --volumes $(docker ps -aq -f status=exited)
✅ Docker 20.10+ 已弃用 -v,统一用 --volumes。
定期用 prune 清理闲置资源
人工清理容易遗漏,建议定时执行:
- 清已停止容器:docker container prune -f
- 清未被使用的匿名卷:docker volume prune -f
- 清悬空镜像:docker image prune -f
- 清未被使用的网络:docker network prune -f
可写成脚本加入 crontab,例如每天凌晨 2 点执行:
0 2 * * * /usr/bin/docker container prune -f && /usr/bin/docker volume prune -f
从设计源头减少残留风险
比起事后打扫,提前规范更省力:
- 卷优先用命名卷:docker volume create app-data,方便追踪和按名清理
- 避免裸用 -v /host/path:/container/path,除非明确需要持久化到宿主机
- 编排用 docker-compose down -v,能一并删服务关联的卷和网络
- 给容器打 label(如 --label env=dev),后续可按标签精准过滤清理











