Docker镜像分析工具dive的安装和使用

Dive 的主要功能:

分层分析:查看 Docker 镜像的每一层,了解每层的文件及其占用的空间。空间利用率:计算镜像中有效空间的占比,给出效率评分。浪费空间检测:识别重复文件、未使用的依赖或冗余数据。手动优化建议:根据分析结果手动调整 Dockerfile 以优化镜像大小。

在RHEL/Centos系统上安装dive:

DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')

curl -OL https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.rpm

rpm -i dive_${DIVE_VERSION}_linux_amd64.rpm

检查dive版本号:

dive --version

通过以下命令来分析 Docker 镜像:

dive nginx:latest

或者通过Docker安装dive:

拉取镜像:

docker pull wagoodman/dive:latest

通过以下命令来分析 Docker 镜像:

docker run --rm -it \

-v /var/run/docker.sock:/var/run/docker.sock \

wagoodman/dive:latest

解释:

-v /var/run/docker.sock:/var/run/docker.sock:这是为了让 Dive 能够访问 Docker 守护进程,来读取和分析本地的 Docker 镜像。--rm:在容器退出后自动删除容器。-it:使容器运行在交互模式下,允许你与 Dive 进行交互。

Dive的使用 :

启动 dive 后,分为两部分:

左侧(层结构):展示 Docker 镜像的每一层,显示每一层的命令(如 COPY、RUN)和镜像层的大小。可以通过上下箭头在不同层之间切换。

右侧(文件系统内容):展示每一层中具体添加、修改或删除的文件和目录。你可以看到镜像每一层对文件系统的影响,以及文件变化和大小。

Layer Details:介绍了这一层的命令

Images Details:介绍镜像的名字、占用空间、镜像中未使用的文件和重复使用文件的大小、镜像使用效率(未使用的文件和重复使用文件的大小/镜像占用总空间)

快捷键:

Tab:左右切换视图

Ctrl+F:搜索指定文件

Ctrl+L:仅显示当前选中层的文件变更(新增、修改、删除)。

绿色:文件是新增的。橙色:文件是被修改的。

Ctrl+A:显示所有层的聚合变化,展示镜像最终的文件系统状态。

右侧视图中的快捷键:

Space:折叠当前选中的目录,隐藏其下的文件和子目录,便于查看文件结构。

Ctrl+O:切换文件和目录的排序顺序。你可以在升序和降序之间切换

Ctrl+A:仅显示当前层中新增的文件。

Ctrl+R:仅显示当前层中被删除的文件。

Ctrl+M :仅显示当前层中被修改的文件。

Ctrl+U:仅显示当前层中未修改的文件。

Ctrl+B:显示文件和目录的属性(如文件权限、大小等)。

Ctrl+P:切换是否启用行换行显示(长文件名是否折行)。