Docker查看镜像分层构建历史history命令
时间:2026-11-14 07:19 作者:emer 分类: Docker
前言
一个镜像由多层叠加而成,想知道每层做了什么、哪层最占空间、Dockerfile 每一步结果,用 docker history 查看。排查镜像体积过大、复现构建过程时很有用。本文讲解 history 基本用法、看层大小、压缩显示、与 inspect 的区别。
操作步骤
1. 查看镜像构建历史
docker history nginx:1.28
2. 以精简格式输出(不截断命令)
docker history --no-trunc nginx:1.28
3. 按人类可读单位显示大小
docker history -H nginx:1.28
4. 查看某层占用,配合统计
docker history nginx:1.28 --format "{{.Size}}\t{{.CreatedBy}}"
5. 对比基础镜像与最终镜像层
docker history debian:bookworm
docker history myapp:latest
6. 查看镜像详细信息用 inspect
docker inspect nginx:1.28
常见坑
- history 只显示构建层,看不到运行时写入的数据卷内容。
- 层大小是累计差值,别把每层简单相加等于总大小。
- --no-trunc 命令很长,适合定位具体指令。
- 多阶段构建只保留最终阶段的层,中间层不显示。
- 有些层是虚拟层(shared),大小为 0 正常。
- 镜像过大要在 Dockerfile 里合并 RUN、清理缓存,history 帮你定位元凶层。
- history 是只读展示,不能修改已有层。
总结
docker history 按层显示镜像构建指令和大小,--no-trunc 看完整命令、-H 看可读单位。它帮助定位体积膨胀层和复现构建过程。优化镜像要回到 Dockerfile 合并命令、清理依赖,history 只是诊断工具。
遇到问题加QQ23979811 协助处理