首页/云/Docker 容器速查/docker history 查看镜像构建历史
镜像与构建107 条

docker history 查看镜像构建历史

按层列出镜像的构建历史(对应 Dockerfile 指令)与每层大小变化,用于确认层来源、定位异常层与审计镜像内容。

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

docker history 是什么

docker history 按层列出镜像的构建历史,显示每层对应的指令与体积增量,用来确认层来源、定位异常大层、审计镜像里执行过什么。输出顺序是从新到旧,与 Dockerfile 的书写顺序正好相反。

基本信息

用途查看镜像层与对应的构建指令
语法docker history [--no-trunc] [--format 模板] 镜像
显示内容层 ID、创建时间、创建指令、体积大小、注释
限制没有构建历史的镜像(导入或第三方导出)显示为 missing
相关命令docker inspect 看配置,docker image ls 看总大小

典型使用场景

  • 排查镜像为什么这么大:按大小排序找出异常层
  • 审计镜像内容:确认镜像里到底执行过哪些命令
  • 安全自查:核对构建参数或口令是否被写进历史
  • 瘦身改造前先看清现状,找出可以合并或清理的步骤
  • 分析构建缓存为何没按预期复用,结合层信息与构建日志判断
  • 做镜像变更说明时列出关键层,方便交接与复盘

示例

示例
docker history app/web:1.0                             # 默认会截断长指令
docker history --no-trunc app/web:1.0                   # 显示完整指令
docker history --format 'table {{.CreatedBy}}\t{{.Size}}' app/web:1.0
docker history --no-trunc app/web:1.0 | head -n 20      # 只看最近的若干层

输出列怎么读

列含义观察重点
IMAGE层 ID可疑来源可据此追溯
CREATED BY该层对应的构建指令是否残留凭据或调试命令
SIZE该层带来的体积增量异常大的层是瘦身切入点
CREATED创建时间(相对时间)判断镜像新旧
COMMENT构建注释通常为空,可忽略
必须加 --no-trunc 才能看到完整指令,默认输出会截断长命令,安全自查时漏掉截断部分就可能漏掉问题。
层大小是增量概念,镜像总大小不等于各层简单相加;看总量用 docker image ls,找增量来源用 history。
出现没有构建历史的层(显示为 missing),说明镜像是导入或由其他工具导出的,这类镜像无法用 history 审计构建过程。

易错点

  • 默认输出截断指令,安全自查没加 --no-trunc,关键信息被漏掉
  • 按顺序从头读效率低,先用 --format 只输出指令与大小再按大小扫一遍更省时间
  • 把 history 当成内容审计工具:它只显示指令文本,不显示实际文件内容,验证内容仍需解包或扫描镜像
  • 镜像由 docker import 或第三方工具生成时 history 里没有有价值的信息,据此推断构建来源容易得出错误结论

数据来源与参考

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