Docker inspect 命令是获取容器网络配置最直接可靠的方式,网关和MAC地址均按网络维度存储于 NetworkSettings.Networks 中,需通过指定网络名(如 bridge)或遍历 map 精准提取,多网络时简写方式不可靠。

Docker 的 inspect 命令是获取容器网络配置最直接、最可靠的方式。网关(Gateway)和 MAC 地址(MacAddress)都属于网络设置中的关键字段,但它们在输出结构中所处位置不同,需用不同路径精准提取。
查看容器的网关地址
网关信息位于每个连接网络的子配置中,不是全局字段。默认 bridge 模式下,网关通常为 172.17.0.1;自定义网络则各不相同。必须指定网络名或遍历 Networks 对象:
-
获取默认网络(如
bridge)的网关:docker inspect --format='{{(index .NetworkSettings.Networks "bridge").Gateway}}' -
若容器连了多个网络(如
my-net和bridge),且你想查my-net的网关:docker inspect --format='{{(index .NetworkSettings.Networks "my-net").Gateway}}' -
批量查看所有已连接网络的网关(含网络名):
docker inspect --format='{{range $k,$v := .NetworkSettings.Networks}}{{printf "%s → %s\n" $k $v.Gateway}}{{end}}'
提取容器的 MAC 地址
MAC 地址也按网络维度存储,每个网络对应一个独立的 MacAddress 字段:
-
获取默认网络(bridge)的 MAC 地址:
docker inspect --format='{{(index .NetworkSettings.Networks "bridge").MacAddress}}' -
获取特定网络(如
app_net)的 MAC 地址:docker inspect --format='{{(index .NetworkSettings.Networks "app_net").MacAddress}}' -
快速列出所有网络及其 MAC 地址(带名称):
docker inspect --format='{{range $k,$v := .NetworkSettings.Networks}}{{printf "%s → %s\n" $k $v.MacAddress}}{{end}}'
实用技巧与注意事项
-
如果容器只连一个网络,也可用简写方式(但不推荐用于生产脚本):
docker inspect --format='{{range .NetworkSettings.Networks}}{{.Gateway}}{{end}}' docker inspect --format='{{range .NetworkSettings.Networks}}{{.MacAddress}}{{end}}'这种写法会遍历全部网络并拼接输出,多个网络时结果不可预测。
NetworkSettings.Networks是 map 类型,键为网络名(如"bridge"),值为包含Gateway、IPAddress、MacAddress等字段的对象。使用
docker network ls和docker network inspect可交叉验证网关是否一致,避免因网络配置变更导致误判。若命令返回空,说明该容器未连接对应网络,或字段不存在(例如使用
--network=host或--network=none时,Networks为空 map,此时无 Gateway 和 MacAddress)。











