批量清理未使用的Docker自定义网络应优先用docker network prune,它自动跳过默认网络且仅删除无容器连接的自定义网络;若需强制清空,则用docker network rm $(docker network ls -q --filter "type=custom"),并确保无活跃容器依赖。
批量清理未使用的 docker 自定义网络,核心是只删“没人用的、你建的”,不碰默认网络(bridge、host、none),避免误删和报错。
识别哪些网络属于可清理的自定义网络
先列出所有用户创建的网络,排除系统内置网络:
-
docker network ls --filter "type=custom"—— 最准确的方式,只显示你用docker network create创建的网络 - 对比
docker network ls全量列表,能快速分辨出bridge等非自定义项 - 加
--format "{{.Name}} {{.ID}}"可读性更好,方便后续排查
安全批量删除无容器连接的自定义网络
推荐使用 docker network prune,它天然满足两个关键条件:只删自定义网络、且仅当无容器连接时才删。
-
docker network prune—— 交互式,会提示确认,适合日常维护 -
docker network prune -f—— 强制执行,跳过提示,适合脚本或批量操作 - 该命令自动跳过
bridge/host/none,也不会动有活跃容器连接的自定义网络
强制清空全部自定义网络(慎用)
适用于重置环境、测试后彻底归零等场景,但需确保没有容器在运行或依赖这些网络:
docker network rm $(docker network ls -q --filter "type=custom")- 关键在
--filter "type=custom",比裸用docker network ls -q更精准、更安全 - 若报错
has active endpoints,说明仍有容器连着某个网络,先停/删相关容器再执行
配合 Compose 场景的补充建议
使用 docker-compose 时,常因 down 未加 --volumes 或项目名变更留下孤儿网络:
- 每次
docker-compose down后,建议顺手跑一次docker network prune - 若已知项目名,可用
docker network ls --filter "label=com.docker.compose.project=xxx"定向筛选并清理 - 避免直接用
docker network rm批量删全量 ID,容易误伤正在使用的网络


















