容器私有网段需结合IPAddress、IPPrefixLen和Gateway计算得出,如172.17.0.3/16对应网段172.17.0.0/16;默认查bridge字段,自定义网络则查对应网络名字段,共享网络模式无独立网段。

直接用 docker inspect 查容器的私有网段,关键不是只看 IP,而是结合子网前缀(IPPrefixLen)和网关,算出完整网段。默认 bridge 网络下,这个网段通常固定,但自定义网络可能不同,必须按实际配置计算。
定位 NetworkSettings 中的网络字段
容器的私有网段信息藏在 NetworkSettings.Networks 结构里。不同网络模式对应不同键名:
- 默认桥接网络 → 查
"bridge"下的字段 - 自定义桥接网络(如
mynet)→ 查"mynet"下的字段 - 使用
--network container:xxx共享网络 → 不分配独立 IP,无网段
提取核心参数:IP、前缀长度、网关
运行以下命令,一次性获取三项关键值:
docker inspect -f 'IP: {{.NetworkSettings.Networks.bridge.IPAddress}} | Prefix: {{.NetworkSettings.Networks.bridge.IPPrefixLen}} | Gateway: {{.NetworkSettings.Networks.bridge.Gateway}}' my-container
输出类似:IP: 172.17.0.3 | Prefix: 16 | Gateway: 172.17.0.1。其中 172.17.0.0/16 就是该容器所属的私有网段。
手动计算网段(适用于任意前缀)
已知 IP 和 IPPrefixLen,就能推导子网地址。例如:
- IP 是
192.168.123.45,前缀是24→ 子网掩码为255.255.255.0→ 网段是192.168.123.0/24 - IP 是
10.0.5.12,前缀是20→ 掩码255.255.240.0→ 网段是10.0.0.0/20
也可用工具辅助验证,比如:ipcalc 172.17.0.2/16 | grep "Network",输出 Network: 172.17.0.0/16。
批量查看所有容器所在网段
若需快速扫一遍当前所有运行中容器的网段归属,可用:
for cid in $(docker ps -q); do name=$(docker ps --format '{{.Names}}' --filter id=$cid); net=$(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}/{{.IPPrefixLen}}{{end}}' $cid 2>/dev/null); echo "$name → $net"; done 2>/dev/null
结果示例:web-app → 172.20.0.3/16、db → 10.10.1.5/24,一目了然各容器归属哪个私有网段。


















