dive 可直观分析 docker 镜像各层文件增删改:绿色为新增、红色为删除、灰色为继承;左侧列层信息,右侧显当前层变动文件,底部显示效率分与浪费字节数。

直接运行 dive 就能可视化看到 Docker 镜像每一层的文件增删改细节,不用翻日志、不靠猜,所有变动都用颜色和结构直观标出来。
启动分析很简单
终端里输入:
dive :
比如 dive nginx:alpine。Dive 会自动拉取镜像元数据,加载分层文件树,几秒后进入交互界面。
盯住三层关键区域看变动
- 左侧是层列表:显示每层 ID、大小、构建指令(如
RUN apt-get install)、时间戳 - 右侧是当前层的文件树:只展示该层新增、修改或删除的文件,不是全量文件系统
- 底部状态栏:实时显示“Efficiency”效率分(有用内容占比)、总大小、浪费字节数
识别变动靠颜色和排序
- 绿色文件 = 当前层新增(真正写入)
- 红色文件 = 当前层删除(但体积仍算在上一层,属冗余)
- 灰色文件 = 未变化(继承自上层,不占本层空间)
- 文件默认按大小倒序排列,顶部就是最大文件或目录,一眼锁定“嫌疑对象”
快速定位典型变动问题
- 某层体积异常大?往上翻 Dockerfile 对应
RUN行,检查是否wget下载了大包却没rm -
/var/lib/apt/lists/或/var/cache/apt/archives/出现在最终层?说明apt-get clean没和install写在同一层 -
node_modules/或.git/出现在生产镜像里?属于开发期文件误入,该用多阶段构建剥离 - 同一文件在相邻层反复出现(绿→灰→绿)?说明被多次 COPY 或覆盖,应合并操作
对比两版镜像看变动差异
优化 Dockerfile 后,构建新镜像并对比:
dive myapp:v1 myapp:v2
界面会并排显示两镜像各层,底部统计“Wasted Bytes”减少多少、“Efficiency”提升几分,验证改动是否真实生效。











