查看容器网络接口详细配置需结合宿主机元数据与容器内真实状态:用docker inspect查IP、网关、端口映射等结构化信息,再通过docker exec -it 容器名 ip addr show进入容器验证实际接口;不同网络模式(bridge/host/none)下配置含义各异,须对照确认。
要查看容器网络接口的详细配置信息,核心是获取容器在网络命名空间内的实际网络状态,而不是仅看宿主机视角的映射关系。关键在于区分「宿主机上查容器网络元数据」和「容器内部查真实网络接口」两类方式,两者互补,缺一不可。这是最常用、最可靠的起点,能拿到 Docker 管理层分配的 IP、网关、子网、端口映射等结构化信息。
docker inspect -f '{{json .NetworkSettings.Networks}}' 容器名
docker inspect -f '{{.NetworkSettings.IPAddress}}' 容器名
docker inspect -f '{{.NetworkSettings.Gateway}}' 容器名
docker inspect -f '{{.NetworkSettings.Ports}}' 容器名
注意:如果容器连了多个自定义网络(比如同时接入 backend 和 monitoring),.IPAddress 字段会为空,必须用 .Networks 遍历各网络下的 IPAddress。
inspect 只反映 Docker 的配置意图,而容器内实际运行的网络接口可能因镜像精简、工具缺失或网络模式不同而表现不一致。需进入容器验证。
docker exec -it 容器名 sh(或 bash,取决于镜像)ip addr show(推荐,无需额外安装)ifconfig -a;如报错,说明未安装 net-tools
ip route show,确认默认网关是否与 inspect 中的 Gateway 一致特别提醒:host 模式下容器没有独立 IP,ip addr 显示的是宿主机接口;none 模式下只有 lo 回环接口。
同一组 inspect 输出,在不同网络模式下意义完全不同,必须对照确认:
172.17.0.0/16),通过 veth pair + iptables NAT 与宿主机通信.NetworkSettings.IPAddress 为空,容器直接使用宿主机的 eth0 等接口,ip addr show 结果与宿主机一致.Networks.mynet.IPAddress 才是有效地址,且通常支持容器名 DNS 解析可通过 docker inspect -f '{{.HostConfig.NetworkMode}}' 容器名 快速确认当前模式。
当容器内网络正常但无法被访问时,问题常出在宿主机侧链路:
ip link show | grep veth,再用 brctl show 看它挂在哪个网桥(如 docker0)sudo iptables -t nat -L -n -v | grep 目标端口
sysctl net.ipv4.ip_forward 应返回 1
这些不是容器“内部”配置,但直接影响容器网络行为,属于完整网络视图的一部分。