docker inspect 是查看容器详细状态的核心命令,输出 JSON 格式,需重点关注 State.Status、NetworkSettings.Networks、Mounts、HostConfig 等字段,并可用 jq 快速提取 IP、挂载、端口映射等信息,注意 Created 与 StartedAt 区别及 NetworkSettings.Networks 为空时的共享网络场景。

docker inspect 是查看容器详细状态的核心命令,输出为 JSON 格式,信息全面但结构嵌套深。掌握关键字段能快速定位运行状态、网络配置、挂载卷、资源限制等问题。
重点关注的顶层字段
输出中以下字段最常用:
-
Status:位于
State对象内,显示running、exited、paused等实时状态;Status为exited时需结合ExitCode判断是否异常退出 -
NetworkSettings.Networks:列出容器接入的网络(如
bridge、my-net),含 IP 地址(IPAddress)、网关(Gateway)、端口映射(Ports)等 -
Mounts:展示所有挂载项,包括 bind mount 和 volume,可确认宿主机路径(
Source)、容器内路径(Destination)、读写权限(RW) -
HostConfig:记录启动时指定的配置,如内存限制(
Memory)、CPU 配额(CpuPeriod/CpuQuota)、重启策略(RestartPolicy)、安全选项(SecurityOpt)
快速提取常用信息的小技巧
不必通读整个 JSON,可用 jq 工具精准提取:
- 查 IP:
docker inspect my-nginx | jq -r '.[0].NetworkSettings.Networks.bridge.IPAddress' - 查挂载:
docker inspect my-app | jq '.[0].Mounts[] | select(.Type=="bind")' - 查端口映射:
docker inspect redis | jq -r '.[0].NetworkSettings.Ports."6379/tcp"[0].HostPort' - 查健康状态(若启用):
docker inspect db | jq '.[0].State.Health.Status'
容易忽略但关键的细节
部分字段语义易被误解,需注意:
-
Created是容器创建时间,不是启动时间;StartedAt和FinishedAt才反映实际生命周期 -
NetworkSettings.Ports中键名格式为"80/tcp",注意斜杠和大小写;空数组表示未映射,null表示未配置端口暴露 -
HostConfig.Binds是旧版绑定方式,Mounts是统一新字段,优先以Mounts为准 - 若容器用
--network container:xxx共享网络,NetworkSettings.Networks将为空,需看NetworkSettings.NetworkMode
对比容器与镜像的 inspect 输出
docker inspect 同样适用于镜像,但字段差异明显:
- 镜像无
State、NetworkSettings、HostConfig等运行时字段 - 镜像关注
Config(如默认 CMD、ENV)、RootFS(层信息)、Architecture、Os - 容器的
Image字段值是镜像 ID 或名称,可用于反向追溯基础镜像










