docker inspect 支持格式化输出,可高效提取镜像ID、标签、摘要等身份标识;构建时间、架构、OS等上下文信息;环境变量、入口命令、端口等配置;以及LABEL和分层结构。
直接用 docker inspect 命令就能提取镜像元数据里的关键信息,不需要解析完整 json——它支持格式化输出和字段筛选,效率高、结果准。
查身份标识:ID、标签、摘要
这些字段说明“这是哪个镜像”:
-
Id 是镜像唯一内容哈希,不可变,代表真实身份:
docker inspect nginx:latest --format='{{.Id}}' -
RepoTags 显示本地打的标签(如
["nginx:alpine"]),空数组表示是悬空层:docker inspect ubuntu:22.04 --format='{{range .RepoTags}}{{.}} {{end}}' -
RepoDigests 只有从支持 digest 的仓库拉取时才有,用于校验远程一致性:
docker inspect nginx:latest --format='{{range .RepoDigests}}{{.}} {{end}}'
看构建上下文:时间、平台、作者
这些字段告诉你“什么时候建的、跑在哪、谁建的”:
- 构建时间戳精确到纳秒,可用于判断是否过期:
docker inspect --format='{{.Created}}' nginx:latest - 目标架构和操作系统决定能否运行:
docker inspect --format='{{.Architecture}}/{{.Os}}' nginx:latest(常见输出如amd64/linux) - Author 字段通常为空,因 MAINTAINER 已弃用;若 Dockerfile 中用了
LABEL maintainer=,这里才会有值
读配置信息:环境变量、启动命令、端口、工作目录
这些字段说明“容器默认怎么启动”:
- 内置环境变量列表:
docker inspect --format='{{json .Config.Env}}' nginx:latest - 默认执行入口(Entrypoint)和命令(Cmd):
docker inspect --format='{{json .Config.Entrypoint}}' nginx:latest和docker inspect --format='{{json .Config.Cmd}}' nginx:latest - 暴露的端口、工作目录、挂载卷等也都在
.Config下:docker inspect --format='{{.Config.ExposedPorts}}' nginx:latest,docker inspect --format='{{.Config.WorkingDir}}' nginx:latest
提取自定义 LABEL 和分层结构
团队常把版本、描述、构建时间等写进 LABEL,或需要确认镜像由哪些层组成:
- 所有 LABEL 键值对都存在
.Config.Labels中,推荐用 OCI 标准前缀:docker inspect --format='{{json .Config.Labels}}' nginx:latest - RootFS.Layers 是按顺序排列的 layer ID 数组,反映实际存储结构:
docker inspect --format='{{json .RootFS.Layers}}' nginx:latest - History 记录每层构建指令,配合
--no-trunc查看完整命令:docker history --no-trunc nginx:latest


















