概述
dive是一个容器镜像分析工具,可以直观的看到容器每一层变动了哪些文件,每一层占用的磁盘空间,这样也就可以看到镜像的历史构建过程;同时也可以看到镜像的磁盘空间使用率,面对特别大的镜像文件是,可以分析是否有优化的空间。
其实镜像每一层的文件信息、文件大小、层的信息,都是存储在镜像的元数据中,dive就是帮我们将这些信息,已更好的方式组装展示出来了,方便我们分析镜像。
使用截图如下:
安装
最新的版本可以到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
返回内容:
返回的内容说明,如上图,主要是四个块,我分别编号 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工具其实已经很好用了,但是在使用的过程中发现,其实还可以再增加一个功能点,就是查看文件内容的功能和被修改过的文件查看变更点,如果有这两功能那就更完美了。