删除网络与批量清理
自定义网络用完需要回收:只要还有容器挂着端点(包括已停止的容器),删除就会被拒绝;批量清理命令只会删掉当前无人使用的自定义网络,内置的几种网络永远不参与删除。残留网络本身占用资源不多,但会持续累积网段与记录,久而久之引发地址冲突与排查困难。规范的清理顺序是先查看占用、断开或停止容器,再执行删除。
基本信息
| 单个删除 | docker network rm 网络名,被占用时报错并提示存在活动端点 |
|---|---|
| 批量清理 | docker network prune,只删无人使用的自定义网络,会二次确认 |
| 按条件清理 | prune 支持过滤条件,例如只清理保留一段时间以上的网络 |
| 内置网络 | 默认桥接、宿主、none 三种内置网络不参与删除 |
| 占用排查 | 用 inspect 查看网络的容器记录,确认是谁还挂着 |
| 强制断开 | disconnect 支持强制断开容器,连接状态异常时可用 |
典型使用场景
- 编排项目下线后清理残留网络,避免网段越堆越多
- 手工创建的网络用完即删,保持环境干净
- 排查地址冲突:先确认是否存在同名或同网段的残留网络
- 重跑初始化脚本前清空环境,避免网络名已存在的报错
- 批量维护时清掉长期无人使用的网络,回收资源
使用示例
使用示例
docker network inspect mynet -f '{{json .Containers}}' # 看谁还挂在网络上
docker network disconnect -f mynet web-1 # 强制断开占用容器
docker network rm mynet # 断开后再删除
docker network prune # 批量删除无人使用的自定义网络(会二次确认)
docker network prune -f --filter 'until=24h' # 清理保留超过一天的无人使用网络
docker network ls # 复核清理结果操作结果读法
| 操作 | 占用时的行为 | 说明 |
|---|---|---|
| 删除单个网络 | 报错提示存在活动端点 | 需先停止或断开容器 |
| 强制断开 | 从容器上摘掉该网络 | 容器连接异常时的补救手段 |
| 批量清理 | 跳过仍被使用的网络 | 只清理无人使用的自定义网络 |
| 内置网络 | 不参与删除 | 默认桥接、宿主与 none 永久保留 |
编排项目下线通常会自动删除它创建的网络:残留网络大多来自手工创建或异常中断的项目。
常见网络名容易重名:删除前先用列表命令核对名称与创建时间,避免误删其他项目正在使用的网络。