最直观的方式是直接进入容器执行网络诊断命令:使用docker exec -it ip addr查看eth0等接口的inet地址(如172.17.0.3/16),适用于现代linux容器;若镜像精简无iproute2,可尝试ifconfig或安装net-tools;windows容器则需用powershell或netsh命令;结果需结合bridge/host/none网络模式理解ip有效性。

直接进入容器执行网络诊断命令是最直观的方式,能真实反映容器内部的网络接口状态和配置。
使用 ip addr 查看接口详情
这是现代 Linux 容器推荐的方法,无需额外安装工具:
- 运行 docker exec -it ip addr,输出包含所有网络接口(如 eth0、lo)的 IPv4/IPv6 地址、MAC 地址、MTU、状态等
- 重点关注 eth0@ifXX 这类带
@if后缀的接口——它表示该接口通过 veth pair 连接到宿主机网桥 - 在输出中查找
inet行,例如inet 172.17.0.3/16,这就是容器在 bridge 网络下的实际 IP
兼容旧镜像:用 ifconfig 查看
部分精简镜像(如 Alpine 或最小化 CentOS)默认不带 iproute2,但可能有 net-tools:
- 先尝试 docker exec -it ifconfig
- 若提示
command not found,说明未安装net-tools;可临时安装(需容器支持包管理):
apt-get update && apt-get install -y net-tools(Debian/Ubuntu)
或 yum install -y net-tools(CentOS/RHEL) - 注意:
ifconfig不显示 IPv6 地址,且对 veth 接口识别不如ip addr清晰
Windows 容器专用方式
Linux 命令在 Windows 容器中不可用,需改用 PowerShell 工具:
- 执行 docker exec -it powershell "Get-NetIPAddress -AddressFamily IPv4"
- 或更简洁地查默认适配器:docker exec -it netsh interface ip show config
- 输出中找 “IP Address” 对应的值,即容器内分配的 IPv4 地址
结合网络模式理解结果
看到 IP 后,要结合容器所用网络模式判断其含义:
- bridge 模式:显示的是 Docker 内部网段地址(如 172.17.0.x),需通过端口映射或自定义网络才能被外部访问
-
host 模式:不会显示独立的 eth0 地址,
ip addr输出与宿主机完全一致,因为共享同一网络命名空间 -
none 模式:只有
lo回环接口,无 eth0,ip addr中看不到有效 inet 地址











