docker镜像分析利器之dive

01 引言

在日常的开发中,我们很多时候会使用docker的命令去查看镜像的元数据信息以及构建镜像的过程,一般我们会使用inspecthistory的两个命令:

docker inspect docker history
在这里插入图片描述 在这里插入图片描述

从上图可以看得出这些信息对我们去分析一个镜像的每一层(Layer)的组成来说还是不太够,不够清晰明了,这个时候,我们可以使用dive,效果如下:

在这里插入图片描述

02 Dive 相关概念

Github地址:https://github.com/wagoodman/dive

在这里插入图片描述

根据官网描述,Dive是一款用于查看docker 镜像层内容以及分析优化 docker/oci 镜像大小的工具,从star来看,也是一款比较热门的开源框架了。


Dive的功能亮点有如下

  • 按层(Layer)显示Docker镜像:在左侧选择一个图层时,将显示该图层的内容以及右侧的所有先前图层。此外,还可以使用箭头键全面浏览文件树;
  • 指出每一层的变化:文件树中指示已更改,修改,添加或删除的文件,可以对其进行调整以显示特定层的更改,或显示直到该层的汇总更改;
  • 估算“镜像效率”:左下方的窗格显示基本图层信息和实验指标,该指标将猜测图像所包含的浪费空间(这可能是由于跨层复制文件,跨层移动文件或没有完全删除文件。提供百分比“得分”和总浪费文件空间);
  • 快速构建/分析周期:可以构建一个Docker镜像并使用以下命令立即进行分析:dive build -t some-tag (只需要用docker build 相同的 dive build 命令替换命令即可)。

03 Dive 安装

Ubuntu/Debian

wget https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.deb
sudo apt install ./dive_0.9.2_linux_amd64.deb

RHEL/Centos

curl -OL https://github.com/wagoodman/dive/releases/download/v0.9.2/dive_0.9.2_linux_amd64.rpm
rpm -i dive_0.9.2_linux_amd64.rpm

Arch Linux

yay -S dive

Mac

brew install dive

Windows

04 Dive 使用

安装完成之后,使用dive --help可以查看其用法,翻译后的含义如下:

用法:
  dive [IMAGE] [flags]
  dive [command]

Flags:
      --ci                                跳过交互式TUI并根据CI规则进行验证 (等同于 CI=true)
      --ci-config string                  如果环境设置 CI=true , 使用给定的yaml来驱动验证规则. (default ".dive-ci")
      --config string                     配置文件(默认是 $HOME/.dive.yaml, ~/.config/dive/*.yaml, or $XDG_CONFIG_HOME/dive.yaml)
  -h, --help                              帮助
      --highestUserWastedPercent string   (只有在指定--ci才有效) 最大允许的字节浪费百分比 (as a ratio between 0-1), 否则ci校验失败. (默认 "0.1")
      --highestWastedBytes string         (只有在指定--ci才有效) 最大允许的字节浪费, 否则ci校验失败. (默认 "disabled")
  -i, --ignore-errors                     镜像分析失败继续运行
  -j, --json string                       跳过交互式TUI,将层分析统计数据写入给定文件.
      --lowestEfficiency string           (只有在指定--ci才有效) 最低允许镜像的效率 (as a ratio between 0-1), 否则ci校验失败. (默认 "0.9")
      --source string                     容器引擎拉取镜像的地方,允许的值: docker, podman, docker-archive (默认 "docker")
  -v, --version                           显示版本号

下面举些例子。

4.1 显示镜像详情

分析镜像命令:

dive <image tag/id/digest>

举例:

dive mysql:8.0.30

在这里插入图片描述

4.2 分析镜像

可以直接显示分析结果,而不显示详情。

分析命令:

CI=true dive  <image tag/id/digest>

举例:

CI=true dive mysql:8.0.30

在这里插入图片描述

05 其它

除了使用docker命令以及dive,类似的工具还可以使用Dedockify

在这里插入图片描述

06 文末

本文主要讲解了hive的一些基本概念及用法,希望能帮助到大家,谢谢大家的阅读,本文完!

猜你喜欢

转载自blog.csdn.net/qq_20042935/article/details/130574313