这是一款用于分析docker镜像、图层内容以及探索缩小Docker镜像大小的方法的工具。
要分析Docker镜像,只需使用image tag/id/digest运行:
dive
或者如果你想新建一个自己的image,那就直接使用命令:
dive build -t .
基本功能
按层分解显示的ocker图像内容当您在左侧选择一个图层时,将显示该图层的内容结合右边的所有先前图层。 此外,你可以充分探索带箭头键的文件树。 现实每层的变化 文件树显示已更改,已修改,添加或删除的文件。可以调整此值以显示特定图层的更改,或聚合更改到此层。 估计image效率 左下方窗格显示基本图层信息和实验指标猜猜您的图片包含多少浪费的空间。 这可能来自重复跨层文件,跨层移动文件或不完全删除文件。提供了百分比“得分”和总浪费的文件空间。 快速构建/分析周期 您可以构建Docker镜像并使用一个命令立即进行分析: dive build -t some-tag . 您只需要使用相同的 dive build 替换 docker build 命令
安装
Ubuntu/Debian
wget https://github.com/wagoodman/dive/releases/download/v0.4.1/dive_0.4.1_linux_amd64.debsudo apt install ./dive_0.4.1_linux_amd64.deb
RHEL/Centos
curl -OL https://github.com/wagoodman/dive/releases/download/v0.4.1/dive_0.4.1_linux_amd64.rpmrpm -i dive_0.4.1_linux_amd64.rpm
Arch Linux在Arch User Repository(AUR)中以dive的形式提供。
yay -S dive
以上示例假定[ yay ]( https://aur.archlinux.org/packages/yay/ )作为安装AUR包的工具。 Mac
brew tap wagoodman/divebrew install dive
or download the latest Darwin build from thereleases page. Windows 或者下载最新的Darwin版本latest release. Go tools
go get github.com/wagoodman/dive
Note: 以这种方式安装,您将无法在运行时看到正确的版本 dive -v . Docker
docker pull wagoodman/dive
or
docker pull quay.io/wagoodman/dive
运行时,您需要包含docker客户端二进制文件和套接字文件:
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock wagoodman/dive:latest
适用于Windows的Docker(显示PowerShell兼容的换行符;折叠为一行以实现命令提示符兼容性)
docker run --rm -it ` -v /var/run/docker.sock:/var/run/docker.sock ` wagoodman/dive:latest
Note:根据您在本地运行的docker版本,您可能需要将docker API版本指定为环境变量:
DOCKER_API_VERSION=1.37 dive ...
or if you are running with a docker image:
docker run --rm -it -v /var/run/docker.sock:/var/run/docker.sock -e DOCKER_API_VERSION=1.37 wagoodman/dive:latest
KeyBindings
Key BindingDescriptionCtrl + C退出Tab or Ctrl + Space在图层和文件树视图之间切换Ctrl + F过滤文件Ctrl + A图层视图:查看聚合图像修改Ctrl + L图层视图:查看当前图层修改SpaceFiletree视图:折叠/取消折叠目录Ctrl + AFiletree视图: 显示/隐藏添加的文件Ctrl + RFiletree视图:显示/隐藏已删除的文件Ctrl + MFiletree视图:显示/隐藏已修改的文件Ctrl + UFiletree视图:显示/隐藏未修改的文件PageUpFiletree视图:向上滚动页面PageDownFiletree视图:向下滚动页面
Configuration
无需配置,但是,您可以创建配置文件并覆盖值:
log: enabled: true path: ./dive.log level: info# Note: you can specify multiple bindings by separating values with a comma.# Note: UI hinting is derived from the first bindingkeybinding: # Global bindings quit: ctrl+c toggle-view: tab, ctrl+space filter-files: ctrl+f, ctrl+slash # Layer view specific bindings compare-all: ctrl+a compare-layer: ctrl+l # File view specific bindings toggle-collapse-dir: space toggle-added-files: ctrl+a toggle-removed-files: ctrl+r toggle-modified-files: ctrl+m toggle-unmodified-files: ctrl+u page-up: pgup page-down: pgdn diff: # You can change the default files show in the filetree (right pane). All diff types are shown by default. hide: - added - removed - changed - unchangedfiletree: # The default directory-collapse state collapse-dir: false # The percentage of screen width the filetree should take on the screen (must be >0 and <1) pane-width: 0.5layer: # Enable showing all changes from this layer and ever previous layer show-aggregated-changes: false
dive将在以下位置搜索配置:
~/.dive.yaml
$XDG_CONFIG_HOME/dive.yaml
~/.config/dive.yaml