当前位置: 首页 > news >正文

自动检测并交互删除未使用 Docker 自定义网桥

Docker 的“废弃网桥”(没有容器使用的网络)如果不删除,会有以下几个影响:


1. IP 地址空间被占用

  • 每个 Docker 网络都会占用一个子网(比如 172.19.0.0/16)。

  • 即使里面没有容器,这个网段也不能再被 Docker 用于新网络。

  • 如果你创建很多临时网络,长期不清理,可能会把常用的 172.16.0.0/12192.168.0.0/16 等私网段占满,后面新建网络时可能报错:

    Error response from daemon: Pool overlaps with other one on this address space
    

2. 配置混乱,管理困难

  • docker network ls 会列出一堆没用的网桥,看着非常乱。
  • 有时候误以为还在用,实际已经没人使用。
  • 对排查网络冲突、调试容器网络非常不友好。

3. 可能增加冲突风险

  • 如果 Docker 网络占用的子网和宿主机内网冲突(比如公司用 172.18.0.0/16,Docker 也占了),就可能导致容器和宿主机/其他服务器网络互通异常。
  • 废弃网桥越多,越难管理这些冲突。

4. 资源消耗(轻微)

  • 每个网络都会在宿主机上生成一对 虚拟网桥接口,虽然资源消耗不大,但几十上百个废弃接口还是会让 ip addr / ifconfig 的输出变得很臃肿。

总结

  • 短期:不清理没大问题,主要就是列表乱。
  • 长期:可能导致 IP 网段冲突新建网络失败排查困难

所以:

  • 日常开发环境,建议定期用 docker network prune 清理。
  • 生产环境,最好手工检查后删除,避免误删还在用的网络。

脚本:clean_unused_networks.sh

#!/bin/bash
# 自动清理未使用的 Docker 网络# 列出所有自定义 bridge 网络(排除 host、none、bridge)
networks=$(docker network ls --filter driver=bridge --format '{{.Name}}' | grep -vE '^(bridge|host|none)$')if [ -z "$networks" ]; thenecho "没有找到自定义的 bridge 网络。"exit 0
fiecho "检测到以下自定义 bridge 网络:"
for net in $networks; docontainers=$(docker network inspect -f '{{json .Containers}}' "$net")if [ "$containers" = "{}" ]; thenecho "🟢 $net (未使用,可以删除)"unused_networks="$unused_networks $net"elseecho "🔵 $net (正在使用,跳过)"fi
doneif [ -z "$unused_networks" ]; thenecho "没有发现未使用的网络。"exit 0
fiecho
echo "是否要删除这些未使用的网络?"
echo "$unused_networks"
read -p "输入 y 确认删除: " confirmif [ "$confirm" = "y" ]; thendocker network rm $unused_networksecho "✅ 已删除未使用的网络。"
elseecho "❌ 已取消。"
fi

使用方法

  1. 保存为 clean_unused_networks.sh

  2. 赋予执行权限:

    chmod +x clean_unused_networks.sh
    
  3. 执行:

    ./clean_unused_networks.sh
    
  • 自动找出所有 自定义 bridge 网络
  • 判断是否被容器使用
  • 给出提示,只删除未使用的

在这里插入图片描述


文章转载自:

http://FKNiUuPc.wLggr.cn
http://8SDZtyh5.wLggr.cn
http://SpZJaO1x.wLggr.cn
http://awx87g5Q.wLggr.cn
http://ZIq7eKmu.wLggr.cn
http://Kuh8Gadw.wLggr.cn
http://Ako1T7jP.wLggr.cn
http://V2ELttb8.wLggr.cn
http://XsBFzFBN.wLggr.cn
http://gWyHgp8Q.wLggr.cn
http://TrUX2fUP.wLggr.cn
http://OXzRolSr.wLggr.cn
http://qHvMaS7A.wLggr.cn
http://kRKWWTCr.wLggr.cn
http://YAuxl3d5.wLggr.cn
http://ZJjlcGmW.wLggr.cn
http://MCRpwiKq.wLggr.cn
http://kcsaluvR.wLggr.cn
http://XZ3SWWZ0.wLggr.cn
http://rCNLH9Ob.wLggr.cn
http://7XJoDDYO.wLggr.cn
http://Gk0DcGbY.wLggr.cn
http://RqPw4nFn.wLggr.cn
http://28SPwho1.wLggr.cn
http://0FbQTUYc.wLggr.cn
http://8UeFtujt.wLggr.cn
http://yHZcEOYh.wLggr.cn
http://60mshERF.wLggr.cn
http://kypzwXjt.wLggr.cn
http://dIMS13Du.wLggr.cn
http://www.dtcms.com/a/386934.html

相关文章:

  • 物联网卡相关知识
  • 访答编辑器使用体验
  • 日常系统问题解决:数据库查询停止
  • 5.3 文件系统 (答案见原书)
  • 【C++】C++11(一)
  • 两数的乘积 = 最大公约数 × 最小公倍数
  • 【Block总结】FDConv,多频动态调制卷积模块|即插即用|CVPR2025
  • Python 爬虫入门:如何抓取电商网站商品数据
  • 2025年上半年软考系统架构设计师备考指南
  • 双反向传播训练光子神经网络(未做完)
  • Java和rust的AES加解密算法互相转化,秘钥key格式不一致带来的问题
  • Altium Designer(AD24)导入DDB库文件(Protel 99SE)方法
  • GEO数据集编号,我为您整理了对应的芯片平台信息的获得办法
  • 《漫威争锋》新内容曝光:刀锋战士预热登场及多项更新
  • 【Redis】-- 哨兵
  • C++八大排序
  • 特殊文件,日志
  • Linux命令大全(文件管理)
  • jira工具
  • 易语言制表符替换为空格如何替换?
  • 2020考研数学(二)真题
  • JVM-对象内存布局
  • leetcode 5 最长回文子串
  • [笔记] 系统分析师 第十二章 软件架构设计(分析师主要工作)
  • 健康大数据管理与服务专业发展潜力大吗?
  • 六、Scala特质
  • 在LazyVim中配置Rust开发环境
  • Navicat x 金仓 KingbaseES 快速入门指南
  • 数据结构:完全二叉树
  • 将容器的日志记录到 Linux 日志系统