概述

dive是一个容器镜像分析工具,可以直观的看到容器每一层变动了哪些文件,每一层占用的磁盘空间,这样也就可以看到镜像的历史构建过程;同时也可以看到镜像的磁盘空间使用率,面对特别大的镜像文件是,可以分析是否有优化的空间。
其实镜像每一层的文件信息、文件大小、层的信息,都是存储在镜像的元数据中,dive就是帮我们将这些信息,已更好的方式组装展示出来了,方便我们分析镜像。
使用截图如下:

公有镜像有curl grpc命令 镜像工具有哪些_linux

安装

最新的版本可以到github上下载:github地址 https://github.com/wagoodman/dive

MAC电脑

brew install 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

Window

# window 可直接在dive仓库的release页面下载 https://github.com/wagoodman/dive/releases

wget https://github.com/wagoodman/dive/releases/download/v0.10.0/dive_0.10.0_windows_amd64.zip
unzip dive_0.10.0_windows_amd64.zip

使用

dive 依赖docker的运行 ,需要再docker运行的情况下去执行dive命令才有效
dive 使用非常简单,直接执行dive + 镜像名 即可,例如

dive nginx

返回内容:

公有镜像有curl grpc命令 镜像工具有哪些_docker_02

返回的内容说明,如上图,主要是四个块,我分别编号 1、2、3、4
第一块主要是镜像的分层,Size代表每一层的磁盘占用大小,Command代表生成该层的命令;
第二块是层的详细信息,包括层的ID,层的唯一ID(用于防篡改),还有生产层的命令
第三块是镜像信息: 包括镜像名、镜像大小、浪费的空间、空间使用率和镜像中的文件
第四块就是每一层的详细文件内容,可以只看变化的,绿色是新增、黄色是修改、红色是删除

常用快捷键

快捷键

说明

tab

在 内容1 和内容4 中来回切换

Ctrl + F

过滤目录,可以某个目录下每一层的变化,例如 输入 /etc ,那么可以看到etc目录在每一层中的变化

Space

当切换到内容4的时候,用于收起/打开文件目录树

Ctrl + A

查看每一层新增的文件

Ctrl + R

查看每一层删除的文件

Ctrl + M

查看每一层修改的文件,包括新增、修改、删除的文件

Ctrl + U

查看每一层未修改的文件

写在最后

dive工具其实已经很好用了,但是在使用的过程中发现,其实还可以再增加一个功能点,就是查看文件内容的功能和被修改过的文件查看变更点,如果有这两功能那就更完美了。