专栏名称: GitHubStore
分享有意思的开源项目
目录
相关文章推荐
InfoQ架构头条  ·  向每年服务超过 10 ... ·  4 天前  
51好读  ›  专栏  ›  GitHubStore

Docker镜像分析工具Dive

GitHubStore  · 公众号  · 运维  · 2024-12-02 08:48

主要观点总结

文章介绍了Dive项目,该项目可以分析Docker image的每个layer的内容,有助于检测空间使用率,优化Docker镜像大小。提供了使用Dive分析Docker镜像的方法,包括在Macbook上构建和运行Docker镜像的方法,以及如何在CI管道中运行Dive以确保空间使用最小化。

关键观点总结

关键观点1: Dive项目简介及其功能

Dive可以分析Docker镜像的每个layer内容,有助于学习Docker layer原理和检测空间使用率。

关键观点2: 如何使用Dive分析Docker镜像

详细介绍了如何使用Dive命令分析Docker镜像,包括构建镜像和运行分析的步骤。

关键观点3: Dive的特点和优势

Dive能够按层细分显示Docker镜像内容,显示每一层的变化,估计图像效率并提供快速构建/分析周期。

关键观点4: Dive的集成和扩展性

Dive支持在CI管道中运行以确保空间使用最小化,并且支持多种镜像源和容器引擎。


正文

项目简介

Dive 可以分析 Docker image 每个 layer 的内容,检测空间使用率,对学习 Docker layer 的原理,优化 Docker 镜像的大小都特别有用。

要分析 Docker 镜像,只需运行带有镜像 tag/id/digest 的 div :

dive <your-image-tag>

或者你可以直接使用 docker 命令潜水

alias dive="docker run -ti --rm  -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive"dive 
# for exampledive nginx:latest

或者,如果您想构建图像,则直接跳到分析它:

dive build -t <some-tag> .

在 Macbook 上构建(仅支持 Docker 容器引擎)

docker run --rm -it \      -v /var/run/docker.sock:/var/run/docker.sock \      -v  "$(pwd)":"$(pwd)" \      -w "$(pwd)" \      -v "$HOME/.dive.yaml":"$HOME/.dive.yaml" \      wagoodman/dive:latest build -t  .

此外,您可以在 CI 管道中运行它,以确保将浪费的空间保持在最低限度(这会跳过 UI):

CI=true dive 



基本特点

按层细分显示 Docker 镜像内容


当您选择左侧的图层时,右侧将显示该图层的内容以及所有先前图层的内容。此外,您还可以使用箭头键全面浏览文件树。


指出每一层的变化

已更改、修改、添加或删除的文件会在文件树中指示。可以对其进行调整以显示特定层的更改,或直至该层的聚合更改。


估计“图像效率”

左下窗格显示基本图层信息和实验指标,该指标将猜测图像包含多少浪费空间。这可能是由于跨层复制文件、跨层移动文件或未完全删除文件造成的。提供百分比“分数”和总浪费文件空间。



快速构建/分析周期

您可以构建 Docker 映像并使用一个命令立即进行分析: dive build -t some-tag .


您只需要将docker build命令替换为相同的dive build即可 命令。


持续集成集成

分析图像并根据图像效率和浪费的空间获得通过/失败结果。只需在调用任何有效的潜水命令时在环境中设置CI=true即可。


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

dive  --source <source>

或者

dive ://

使用有效的source选项,如下所示:

  • docker :Docker 引擎(默认选项)

  • docker-archive :磁盘上的 Docker Tar 存档

  • podman :Podman 引擎(仅限 Linux)


项目链接

https://github.com/wagoodman/dive

扫码加入技术交流群,备注开发语言-城市-昵称

合作请注明


 

关注「GitHubStore」公众号