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 还提供可供配置的方式,详情可通过如下项目链接了解。