python 脚本自动化巡检 bridge 网络状态的核心是“查配置 + 测连通 + 报异常”:先通过 client.networks.list() 检查目标网络是否存在及 driver、subnet、containers 数量是否合规;再遍历容器提取并校验 ipaddress 是否为有效私有地址;接着复用运行中容器执行 ping 和 dns 连通性探测;最后生成含时间戳、异常摘要与原始数据锚点的结构化 json/html 报告。

用 Python 脚本自动化巡检 Bridge 网络状态,核心是“查配置 + 测连通 + 报异常”,不依赖人工登录或逐条命令执行,重点在于可重复、可集成、能定位真实问题。
检查网络存在性与基础属性
先确认目标网络是否已创建,并验证关键参数是否符合预期(比如子网、驱动类型)。避免脚本在错误网络上执行后续操作。
- 调用
client.networks.list()获取全部网络,用name过滤目标网络 - 若存在,调用
network.attrs提取Driver(应为bridge)、IPAM.Config.Subnet和Containers数量 - 若子网为空或容器列表为 0,记录告警:“网络已存在但未接入容器”
批量获取容器 IP 并验证地址有效性
Bridge 网络下容器通信依赖正确分配的 IPv4 地址。脚本需主动提取并过滤无效地址(如 127.0.0.1、0.0.0.0 或缺失 IPAddress 字段)。
- 遍历
network.attrs['Containers']中每个容器 ID,用client.containers.get(id)获取容器对象 - 从
container.attrs['NetworkSettings']['Networks'][network_name]中读取IPAddress - 对每个 IP 执行
ipaddress.ip_address(ip).is_private校验是否属于私有地址段(如172.17.0.0/16或自定义子网) - 发现非私有 IP 或空值时,标记该容器“网络配置异常”,跳过连通测试
执行轻量级连通性探测
不启动新容器,复用已有容器执行 ping 和 curl(若容器含 curl),聚焦关键路径:容器 ↔ 容器、容器 ↔ 网关、容器 ↔ 外网 DNS。
- 选一个运行中的容器作为探针,用
docker exec -it {cid} ping -c 2 -W 1 {target_ip}测试互通(目标包括同网段其他容器 IP、网关 IP) - 用
docker exec {cid} cat /etc/resolv.conf | grep nameserver检查 DNS 配置,再执行ping -c 1 8.8.8.8或nslookup google.com - 超时或失败时,输出具体命令、返回码和 stderr 内容,便于快速回溯
生成结构化巡检报告
结果不能只打印 console,要支持导出为 JSON 或简易 HTML,包含时间戳、网络名、异常项摘要和原始数据锚点。
- 汇总统计:总容器数、有效 IP 数、ping 成功率、DNS 可达率
- 异常明细按类别分组:IP 异常容器列表、连通失败对(源→目标)、DNS 解析失败记录
- 附加建议,例如:“网关不可达 → 检查宿主机 iptables FORWARD 链是否允许 docker0 流量”











