文章目录
- [Dive:Docker 镜像层可视化分析工具](#Dive:Docker 镜像层可视化分析工具)
Dive:Docker 镜像层可视化分析工具
Dive 是一个用于探索 Docker 镜像内部结构的工具,目前在 GitHub 上获得了超过 54,300 个星标,采用 MIT 许可证发布。项目的主要功能是解构镜像层内容,帮助发现减少 Docker 镜像体积的方法。


镜像臃肿是容器化部署中的实际问题。多层叠加导致文件重复、未清理的缓存和残留文件被持续打包进新镜像,最终产出的体积远超实际需要。使用命令只能看到总大小,无法判断浪费的具体位置。Dive 把镜像按层拆解,展示每层新增、修改或删除的文件,让空间浪费的根因直接可见。
工具的基本调用只需要传递一个镜像标识:
dive <your-image-tag>
也可以直接通过容器方式运行,挂载 Docker socket 后无需在本地安装。主要方式是与构建流程合并,使用 dive build -t <tag> . 替代构建命令,完成构建后立即分析。
分析界面采用左右分栏布局。左侧显示镜像层列表,按构建顺序排列;右侧展示文件树。选中某一层后,右侧会呈现该层及之前所有层的累计内容,文件状态通过颜色标识区分。左下角呈现基础层信息和一个镜像效率指标,估算浪费空间的比例。交互上支持用方向键浏览文件树,按 Tab 切换视图,按 Ctrl+F 过滤文件,这些快捷键可以在不使用鼠标的情况下完成大部分操作。
镜像效率指标以百分比和字节数两种形式展示。效率低于预期意味着镜像存在重复文件、跨层移动文件或删除不彻底等问题,可以据此逆向优化构建脚本。
在持续集成场景中,设置 CI=true 后会跳过图形界面,仅返回基于效率和浪费空间的通过不通过状态码。通过 .dive-ci 配置文件可以定义最低效率阈值、最大允许浪费字节数和用户空间浪费百分比三项规则,方便集成到现有流水线中。
支持多种镜像来源和容器引擎。通过 --source 参数可以选择本地 Docker 引擎、Podman 或磁盘上的 Docker Tar Archive。界面和快捷键可通过 YAML 配置文件自定义,安装方式覆盖 Homebrew、系统包管理器、容器运行和直接下载二进制包。
项目目前处于测试阶段,社区欢迎提交新功能请求或错误报告。对于需要控制镜像体积的团队,Dive 可以作为工具使用。
于需要控制镜像体积的团队,Dive 可以作为工具使用。