docker镜像分析利器之dive

简介: docker镜像分析利器之dive

01 引言

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

docker inspect docker history
image.png image.png

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

demo.gif

02 Dive 相关概念

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

image.png

根据官网描述,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

image.png

4.2 分析镜像

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

分析命令:

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

举例:

CI=true dive mysql:8.0.30

image.png

05 其它

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

image.png

06 文末

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

目录
相关文章
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像-手动制作yum版nginx镜像
这篇文章介绍了如何手动制作一个基于CentOS 7.6的Docker镜像,其中包括下载指定版本的CentOS镜像,创建容器,配置阿里云软件源,安装并配置nginx,自定义nginx日志格式和web页面,最后提交镜像并基于该镜像启动新容器的详细步骤。
104 21
Docker镜像-手动制作yum版nginx镜像
|
6天前
|
jenkins 持续交付 Docker
docker之自定义制作镜像(python程序)
docker之自定义制作镜像(python程序)
|
1月前
|
应用服务中间件 nginx Docker
Docker镜像-基于DockerFile制作编译版nginx镜像
这篇文章介绍了如何基于Dockerfile制作一个编译版的nginx镜像,并提供了详细的步骤和命令。
147 17
Docker镜像-基于DockerFile制作编译版nginx镜像
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像管理篇
关于Docker镜像管理的教程,涵盖了Docker镜像的基本概念、管理命令以及如何制作Docker镜像等内容。
117 7
Docker镜像管理篇
|
1月前
|
应用服务中间件 Linux nginx
Docker镜像-基于DockerFile制作yum版nginx镜像
本文介绍了如何使用Dockerfile制作一个基于CentOS 7.6.1810的yum版nginx镜像,并提供了详细的步骤和命令。
75 20
|
1月前
|
Docker 容器
Docker Hub镜像公共仓库使用
这篇文章介绍了如何使用Docker Hub公共仓库进行镜像的创建、上传、下载和管理。
438 8
|
2月前
|
运维 前端开发 API
实战 web 应用 Docker 镜像解耦交付
实战 web 应用 Docker 镜像解耦交付
|
2月前
|
存储 安全 Ubuntu
Docker 镜像与 Docker 容器的区别
【8月更文挑战第27天】
83 5
|
2月前
|
存储 Ubuntu 应用服务中间件
在Docker中,怎么快速查看本地的镜像和容器?
在Docker中,怎么快速查看本地的镜像和容器?
|
3月前
|
Shell Linux Docker
docker常用命令大全(基础、镜像、容器、数据卷)
这些命令仅仅是 Docker 命令行工具的冰山一角,但对于日常操作来说已经非常全面。通过熟练地使用这些基础命令,用户可以有效地管理 Docker 的镜像、容器、数据卷和网络。随着用户对 Docker 的深入使用,更高级的命令和选项将会变得必需,但上面列出的命令已经为用户提供了一个坚实的起点。对于初学者来说,理解和掌握这些常用命令是深入学习 Docker 的基础。
280 5
docker常用命令大全(基础、镜像、容器、数据卷)
下一篇
无影云桌面