dive可逐层分析镜像文件构成,快速定位冗余资产;支持一键安装或docker运行,通过交互界面查看层信息、文件树及效率评分,结合颜色标记识别增删文件,并对比优化前后镜像差异。

直接用 dive 打开镜像,就能一层层翻查文件构成,不用猜、不靠经验,大文件和冗余资产会立刻“浮出水面”。
安装与启动:三步到位
Linux 用户推荐一键下载安装:
- 运行:
curl -L https://github.com/wagoodman/dive/releases/download/v0.10.0/dive_0.10.0_linux_amd64.tar.gz | tar xz && sudo install dive /usr/local/bin/ - 验证:
dive --version确认输出版本号 - 分析任意本地镜像:
dive myapp:latest
也可用 Docker 方式免安装运行:docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive:latest myapp:latest
交互界面实操:盯住三层关键信息
进入界面后,左侧是层列表(含大小、指令、时间),右侧是当前层的文件树,底部显示效率评分和统计。重点操作如下:
- 用 ↑/↓ 键逐层切换,观察每条
RUN指令实际写入了哪些文件 - 按
Ctrl+/切换视图模式,在“文件树”“层摘要”“命令历史”间快速跳转 - 在文件树中按大小排序(默认已启用),顶部即为最大文件或目录
- 留意绿色(新增)、红色(删除)、灰色(未变)标记——红色文件说明它曾被加入又删掉,但体积仍计入该层,属典型冗余
快速定位四类高频臃肿资产
结合文件树和层大小,重点关注以下位置是否藏有未清理的大块内容:
-
/var/lib/apt/lists/或/var/cache/apt/archives/:Debian/Ubuntu 系统安装包缓存,常见于apt-get install后未清空 -
node_modules/:前端或 Node.js 项目全量依赖,若未用多阶段构建,会连编译工具一起打进最终镜像 -
/tmp/、/build/、/src/下残留的中间产物(如 .o、.so、调试符号.debug文件) -
.git/、secrets.json、.env、__pycache__/:开发期文件误入生产镜像,既占空间又有安全风险
验证优化效果:对比才是硬标准
改完 Dockerfile 后,别只看镜像大小数字,要用 Dive 做前后对比:
- 构建新镜像:
docker build -t myapp:v2 . - 对比分析:
dive myapp:v1 myapp:v2 - 关注底部 “Efficiency” 分数变化(目标 >90%),以及 “Wasted Bytes” 是否显著下降
- 若某层体积突增,回到 Dockerfile 对应
RUN行,检查是否引入了未清理的大文件(比如wget下载后没rm)











