Dive 提供了一个基于终端的用户界面(TUI),允许用户交互式地探索 Docker/OCI 容器镜像。本文档涵盖了主要的 UI 组件、它们的功能、导航方法和配置选项。关于图层视图的详细信息,请参阅 图层视图,关于文件树视图的详细信息,请参阅 文件树视图。
Dive 的界面设计旨在以直观的基于终端的格式呈现复杂的容器镜像图层数据。UI 分为几个关键组件,允许用户分析镜像结构、查看图层之间的文件更改,并识别优化机会。
来源: README.md
Dive 的 UI 使用 gocui 库构建,用于终端用户界面,并遵循视图-控制器模式。UI 组件被管理为独立的视图,这些视图可以获得焦点并通过注册的键绑定处理用户输入事件。
UI 实现主要位于 runtime/ui 目录,其中包含视图实现、控制器和键绑定定义。
来源:go.mod
图层视图显示容器镜像中的所有图层,指示大小、用于创建图层的命令和时间戳。这是理解镜像图层结构的主要视图。
有关更详细的信息,请参阅 图层视图。
来源: README.md
文件树视图显示所选图层的文件系统,允许用户导航目录结构。文件根据在所选图层中是添加、删除还是修改进行颜色编码。
有关更详细的信息,请参阅 文件树视图。
来源: README.md
效率统计视图位于 UI 的左下角,提供有关镜像效率的指标
此视图有助于用户识别其容器镜像中的优化机会。
来源:README.md:62-64
Dive 使用键盘快捷键进行所有导航和交互。界面设计为完全由键盘驱动。
有关键盘快捷键的完整列表,请参阅 键绑定和导航。
来源:README.md:255-278
Dive 的 UI 可通过 YAML 配置文件进行高度配置。配置选项包括
Dive 在以下位置搜索配置文件
$XDG_CONFIG_HOME/dive/*.yaml$XDG_CONFIG_DIRS/dive/*.yaml~/.config/dive/*.yaml~/.dive.yamlUI 配置部分允许自定义界面的各种方面,包括键绑定、显示偏好设置和默认行为
来源:README.md:279-351
UI 使用 gocui 库实现,用于终端应用程序。该架构遵循模型-视图-控制器模式,其中
来源:go.mod
UI 提供了强大的过滤功能,允许用户专注于容器镜像的特定方面
这使用户在分析更改时能够快速专注于镜像的相关部分。
来源:README.md:255-278
Dive 使用终端颜色提供有关文件状态的视觉提示
这些视觉指示器使一眼就能轻松理解图层更改。
来源: README.md
下面是 Dive UI 在镜像分析期间外观的表示
┌─ Layers ───────────────────────────────────┐┌─ Current Layer Contents ─────────────────────┐
│ Cmp │ Layer │ Size │ Command ││ Path │ Size │ Filetree │
│ ──────────────────────────────────────────││───────────────────────────────────────────────│
│ 3/5 │ c3...1│ 1.2M │ /bin/sh -c #(nop) C...││ ├── bin/ │ │ DIR │
│ 4/5 │ ab...6│ 4.5M │ /bin/sh -c apt-get ...││ │ ├── ls │ 142K │ FILE │
│ 5/5 │ e7...9│ 94M │ /bin/sh -c apt-get ...││ │ └── bash │ 1.1M │ FILE │
│>1/5 │ 8d...e│ 86M │ FROM debian:latest ││ ├── etc/ │ │ DIR │
│ 2/5 │ fe...3│ 0B │ /bin/sh -c #(nop) M...││ │ ├── passwd │ 1.3K │ FILE │
│ ││ │ └── shadow │ 921B │ FILE │
│ ││ └── var/ │ │ DIR │
│ ││ └── ... │ │ │
├─ Status ──────────────────────────────────┘└───────────────────────────────────────────────┘
│ Efficiency: 98% │ Layer Info: 86MB From debian:latest │
│ Wasted Space: 9.2MB │ │
└────────────────────────────────────────────┴───────────────────────────────────────────────┘
来源:README.md:8-16
当运行具有 CI=true 环境变量时,Dive 会完全绕过 UI 并以非交互模式运行,产生具有通过/失败状态的分析结果。此模式专为集成到持续集成管道而设计。
有关 CI 集成的更多信息,请参阅 CI 集成。
来源:README.md:43-48, README.md:236-252