首页/云/Docker 容器速查/查询容器 IP 地址
基础命令50 条

查询容器 IP 地址

用模板从 NetworkSettings 提取容器 IP;自定义网络里的地址要遍历 Networks 映射,直接取首层 IPAddress 会拿到空值。

Docker 容器速查云更新于 2026-10-13

怎么查容器 IP

标准做法是用 docker inspect 加 Go 模板从 NetworkSettings 里取地址。要注意自定义网络下地址不在顶层 IPAddress 字段,而在 Networks 映射里,直接取首层会拿到空字符串,这是这一类命令最常见的踩坑点。

基本信息

用途查看容器在某个网络里分配到的 IP
要点自定义网络取 .NetworkSettings.Networks.<网络名>.IPAddress
通用模板-f '{{range $n,$v := .NetworkSettings.Networks}}{{$n}}={{$v.IPAddress}} {{end}}'
快捷方式docker exec 容器 hostname -i,镜像里要有 hostname 命令
另一种视角docker network inspect 网络名,一次列出全部成员与地址

典型使用场景

  • 排查容器间连通问题,确认双方是否接在同一网络、地址是否同网段
  • 用 IP 直连验证:按地址能通而按名字不通,问题就在名称解析
  • 写监控采集配置时快速取到抓取目标地址
  • 对照 docker network inspect 的输出,确认容器接入了哪些网络
  • 在宿主上抓包或做流量限制时确定要针对哪个容器地址
  • 多网络接入的服务排查流量走向,确认它从哪个网络出口访问上游

示例

示例
docker inspect -f '{{range $n, $v := .NetworkSettings.Networks}}{{$n}}={{$v.IPAddress}} {{end}}' web
docker inspect -f '{{.NetworkSettings.Networks.app-net.IPAddress}}' web   # 指定网络
docker network inspect app-net --format '{{range .Containers}}{{.Name}} {{.IPv4Address}}{{"\n"}}{{end}}'
docker exec web hostname -i        # 镜像里有 hostname 命令时才可用

取 IP 的几种方式

方式适用情况注意
inspect 遍历 Networks自定义网络,或接入了多个网络最通用,能一次列出全部网络与地址
inspect 指定网络名已知接入的网络名网络名写错时模板渲染直接报错
network inspect 网络想一次性核对全部成员按网络视角组织,适合批量检查
exec 里执行 hostname -i容器内有 hostname 工具极简镜像通常没有这个命令
容器 IP 随容器重建而变化,跨容器互访应当用容器名或网络别名(嵌入式 DNS 解析),把 IP 写进配置迟早失效。
同一个容器可以接入多个网络,每个网络各有地址;查连通性时要确认双方是否在同一个网络里,只比地址段容易误判。
compose 创建的网络名通常带项目前缀(如 shop_default),用模板取值时网络名要写完整,否则匹配不到对应那一项。

易错点

  • 自定义网络下顶层 .NetworkSettings.IPAddress 是空字符串,模板必须改成遍历 Networks,否则排障时拿到空值会以为是网络没配上
  • 把取到的 IP 硬编码进配置,容器重建后地址变化,问题往往在重启之后才暴露
  • 默认 bridge 网络不支持容器名互访,长期方案是建自定义网络,只依赖 IP 的配置迁移一次就整体失效
  • 把容器地址当成宿主的可达地址去判断端口冲突,实际容器地址只在对应网络内可用
  • 没有接入任何自定义网络的容器,Networks 里只有默认 bridge 一项,模板照样能输出地址,别把这个地址当成可供服务互访的稳定地址

数据来源与参考

  • Docker 官方 CLI 参考:docker inspect(docs.docker.com)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌