docker inspect 命令用于查看镜像等对象的静态 JSON 元数据,核心字段包括标识身份的 Id、RepoTags、RepoDigests,记录构建信息的 Created、Author、Architecture、Os,以及描述配置与分层的 Config、RootFS、History。

Docker inspect 命令用于查看镜像(或容器、网络、卷等)的底层元数据,输出为结构化 JSON。对镜像执行 docker inspect ,返回的是该镜像在本地存储中的完整配置快照,不是运行时状态——它反映的是构建完成、未启动前的静态信息。
核心字段:Id、RepoTags、RepoDigests
这三个字段标识镜像身份:
-
Id:镜像唯一 SHA256 ID(如
sha256:abc123...),是内容寻址的哈希值,不可变;即使镜像名相同,ID不同即为不同镜像。 -
RepoTags:本地打标的标签列表,例如
["nginx:latest", "myapp:v1.2"];空数组表示该镜像未被 tag,可能是中间层或 dangling 镜像。 -
RepoDigests:远程仓库中该镜像的摘要(digest),格式为
registry/repo@sha256:xxx;只有从 registry 拉取且支持 digest 的镜像才包含此项,用于确保拉取内容确定性。
构建信息:Created、Author、Architecture、Os
这些字段记录镜像生成时的上下文:
-
Created:镜像构建完成的时间戳(UTC),精确到秒,格式为
"2024-03-15T08:22:10.123456789Z";可用于判断镜像新鲜度或排查缓存失效问题。 -
Author:Dockerfile 中
MAINTAINER指令(已弃用)或LABEL maintainer=...设置的作者信息,非必填,常为空。 -
Architecture 和 Os:镜像目标平台,如
"amd64"/"linux";多架构镜像(如arm64)会在此体现,影响docker build --platform兼容性。
配置与根文件系统:Config、RootFS、History
这部分揭示镜像“是什么”和“怎么来的”:
-
Config:对应 Dockerfile 构建最终阶段的
config对象,含Cmd(默认命令)、Env(环境变量)、ExposedPorts、Volumes、Labels等运行时配置。 -
RootFS:描述镜像分层结构,
Type通常为"layers",Layers是一个字符串数组,每一项是该镜像所依赖的 layer 的 SHA256 ID(按构建顺序排列)。 -
History:构建过程每一步的记录,每个元素含
created(时间)、created_by(原始指令,如/bin/sh -c #(nop) COPY file...)、empty_layer(是否空层);可用来追溯某一层是否真的修改了文件系统。
实用技巧:精准提取关键字段
避免读取冗长 JSON,可用 --format 或 jq 提取所需信息:
- 查镜像 ID:
docker inspect nginx:alpine --format='{{.Id}}' - 查所有标签:
docker inspect ubuntu:22.04 --format='{{range .RepoTags}}{{.}} {{end}}' - 查基础 OS 和架构:
docker inspect redis:7 --format='{{.Os}}/{{.Architecture}}' - 查某层大小(单位字节):
docker inspect alpine:latest | jq '.[0].Size' - 查构建时 ENV:
docker inspect python:3.11 --format='{{json .Config.Env}}'
Inspect 输出不包含镜像实际内容(如文件列表),也不反映运行时状态(如端口映射、挂载点)。它是理解镜像构成、调试构建逻辑、验证安全策略(如检查 base 镜像版本)的重要依据。掌握关键字段含义,能快速定位镜像来源、兼容性和配置偏差。










