Skip to content

Latest commit

 

History

History
executable file
·
43 lines (24 loc) · 2.16 KB

2019-12-09-dive.docker.analysis.md

File metadata and controls

executable file
·
43 lines (24 loc) · 2.16 KB
layout title tags
post
Docker 容器镜像分析工具
Go

Docker 容器被越来越多的使用,我们也越来越多的享受它带来的便利。但是有时候涉及镜像层面的问题我们确不知道怎么排查,比如镜像占用的空间太大、构建的镜像每一层都做了哪些更改是不是符合预期等等。

今天要分享的就是一个 GitHub 标星 17.7K 的 Docker 容器分析工具:dive,我们首先来看一下官方制作的使用动图。

dive 提供功能如下:

  • 显示镜像每层的内容

dive 的命令行界面分成左右两边,左边是镜像的层数,通过选择不同的镜像层,可以在右边显示对应的目录树结构。

  • 显示镜像每层的变更

通过选择对应的某一层,右边会根据不同的颜色标注该层文件的变化、修改、增加或者删除。

  • 估算镜像的空间利用率

通过分析每层出现的重复文件数、跨不同层移动文件、没有完全删除的文件等,可分析出来镜像中存在的额外不必要的空间占比,通过这个占比可以不断去推动缩小镜像的大小。镜像大小的减少可以带来很直接的好处,比如镜像拉去快服务启动也快。

  • 快速构建和分析的反馈环

你可以通过在构建的时候使用命令 dive build 替换原来的 docker build 就可以直接得到当前构建镜像的分析结果,根据分析结果可快速作出是否需要优化的决策。

  • 集成 CI

通过在 dive build 前面添加 CI=true 就可以集成到对应的流水线流程中,通过设置不同的空间利用率来控制镜像构建是否通过。

  • 多种镜像源和容器引擎的支持

通过参数 --source 可以选择不同的镜像数据的格式源及不同容器的引擎。

以上就是 dive 提供的功能,默认安装 dive 就可直接使用,同时对于有定制化需求的用户,dive 还提供可供配置的方式,详情可通过如下项目链接了解。

项目地址:https://github.com/wagoodman/dive