如何分析和探索Docker镜像的内容
我们可能已经知道,Docker容器镜像是轻量级的,独立的,可执行的软件软件包,其中包含运行应用程序所需的一切。
这就是为什么开发人员经常使用容器镜像来构建和分发应用程序。
如果我们想知道Docker镜像中的内容,则此简短教程可能会为我们提供帮助。
今天,我们将学习使用名为“ Dive”的工具逐层分析和探索Docker镜像的内容。
通过分析Docker镜像,我们可以发现各层之间可能存在的重复文件,并将其删除以减小Docker镜像的大小。
Dive实用程序不仅是Docker Image分析器,而且还可以帮助我们构建一个。
Dive是使用Go编程语言编写的免费开放源代码工具。
安装Dive
从发行页面获取最新版本,并根据我们使用的发行版,如下所示进行安装。
如果我们使用的是Debian或者Ubuntu,请运行以下命令进行下载和安装。
$wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.deb
$sudo apt install ./dive_0.0.8_linux_amd64.deb
在RHEL/CentOS上:
$wget https://github.com/wagoodman/dive/releases/download/v0.0.8/dive_0.0.8_linux_amd64.rpm
$sudo rpm -i dive_0.0.8_linux_amd64.rpm
它在AUR中可用,因此我们可以在Arch Linux及其变体上使用任何AUR帮助器工具进行安装,例如Yay。
$yay -S dive
也可以使用Linuxbrew软件包管理器安装Dive。
$brew tap wagoodman/dive
$brew install dive
有关其他安装方法,请参阅本教程末尾给出的项目的GitHub页面。
分析和探索Docker镜像的内容
要分析Docker镜像,只需运行带有Docker“ Image ID”的潜水命令。
我们可以使用“ sudo docker images”命令获取Docker镜像的ID。
$sudo dive ea4c82dcd15a
其中ea4c82dcd15a是Docker镜像ID。
Dive命令将快速分析给定的Docker镜像并在终端中显示其内容。
如我们在上面的屏幕截图中所见,左侧窗格中显示了给定docker镜像的层及其详细信息,浪费的空间。
在右侧窗格中,给定Docker镜像中每一层的内容。
我们可以使用Ctrl +空格键和向上/向下箭头键在左右窗格之间切换,以浏览目录树。
使用“Dive”的键盘快捷键列表。
- Ctrl +空格键-在左右窗格之间切换,
- 空格键-展开/折叠目录树,
- Ctrl + A-显示/隐藏添加的文件,
- Ctrl + R-显示/隐藏已删除的文件,
- Ctrl + M-显示/隐藏修改的文件,
- Ctrl + U-显示/隐藏未修改的文件,
- Ctrl + L-显示图层更改,
- Ctrl + A-显示图层更改,
- Ctrl + /-过滤文件,
- Ctrl + C-退出。
在上面的示例中,我使用了“ sudo”权限,因为我的Docker镜像存储在/var/lib/docker /目录中。
如果我们将它们放在$HOME目录中或者任何其他不拥有“ root”用户的地方,则无需使用“ sudo”。
我们还可以构建一个Docker镜像并使用以下命令立即进行分析:
$dive build -t <some-tag>