docker inspect 是查看容器详细配置和运行时状态的核心命令,输出结构化 JSON 数据,支持用 -f 提取单字段、模板语法取多字段或结合 jq 做复杂筛选。

docker inspect 是查看容器详细配置和运行时状态的核心命令,它输出的是结构化 JSON 数据,可精准提取容器的健康状态、网络信息、挂载路径、启动参数等关键字段。
获取容器状态基础信息
直接运行 docker inspect 容器名或ID 会返回完整 JSON。最常用的状态字段包括:
-
State.Status:显示 running、exited、paused 等当前状态 -
State.Health.Status:若定义了健康检查,此处反映健康状态(如 healthy、unhealthy) -
State.StartedAt和State.FinishedAt:记录启动与退出时间戳 -
State.ExitCode:容器退出时的返回码(仅当 Status 为 exited 时有效)
用 -f 参数精准提取单个字段
避免解析整段 JSON,用 --format(简写 -f)配合 Go 模板语法快速取值:
使用 Python 脚本下载 Docker 镜像并打包为 tar 文件。用户说“下载镜像”“拉取镜像”“pull xxx”“帮我下载 nginx 镜像”等时触发。支持 SOCKS5 代理直连(推荐)和国内镜像站加速两种模式。
- 查运行状态:
docker inspect -f '{{.State.Status}}' nginx→ 输出running - 查 IP 地址:
docker inspect -f '{{.NetworkSettings.IPAddress}}' nginx(适用于默认 bridge) - 查自定义网桥 IP:
docker inspect -f '{{.NetworkSettings.Networks.mynet.IPAddress}}' nginx(假设网络名为 mynet) - 查挂载源路径:
docker inspect -f '{{(index .Mounts 0).Source}}' nginx(取第一个挂载点的宿主机路径)
提取多字段或结构化数据
模板中支持简单逻辑和嵌套访问。例如同时看状态、端口映射和健康状态:
docker inspect -f 'Status: {{.State.Status}} | Port: {{(index .NetworkSettings.Ports "80/tcp" 0).HostPort}} | Health: {{.State.Health.Status}}' nginx
注意:.NetworkSettings.Ports 是 map 结构,"80/tcp" 是键,(index ... 0) 表示取该端口映射列表中的第一个 HostPort。
结合 jq 工具做复杂筛选(推荐进阶使用)
安装 jq 后可对原始 JSON 做过滤、格式化、条件判断:
- 只显示健康状态和日志驱动:
docker inspect nginx | jq '.[0] | {health: .State.Health.Status, log_driver: .HostConfig.LogConfig.Type}' - 列出所有绑定端口及宿主机地址:
docker inspect nginx | jq '.[0].NetworkSettings.Ports | to_entries[] | "\(.key) → \(.value[0].HostIp):\(.value[0].HostPort)"' - 筛选出已退出且 ExitCode 非 0 的容器:
docker ps -a --format '{{.ID}} {{.Status}}' | awk '$2 ~ /Exited/ {print $1}' | xargs -I{} docker inspect {} | jq -r 'select(.[0].State.ExitCode != 0) | .[0].Id[:12] + " → " + (.[0].State.ExitCode|tostring)'

















