Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
dive — Инструмент для исследования каждого слоя в образе Docker | Kitploit
Инструменты/GitHubGitHub/wagoodman/dive
Утилиты общего назначенияБезопасность контейнеров
GitHubwagoodman/dive

dive

Инструмент для исследования каждого слоя в образе Docker

Репозиторий
54.4k2.0k1 год назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

dive

GitHub release Validations Go Report Card License: MIT Donate

Инструмент для изучения Docker-образов, содержимого слоев и поиска способов уменьшить размер вашего Docker/OCI образа.

Image

Чтобы проанализировать Docker-образ, просто запустите dive с тегом/id/дайджестом образа:

root@kitploit:~
dive <your-image-tag>

или вы можете запустить dive через Docker напрямую:

root@kitploit:~
alias dive="docker run -ti --rm  -v /var/run/docker.sock:/var/run/docker.sock docker.io/wagoodman/dive"
dive <your-image-tag>

# for example
dive nginx:latest

или если вы хотите сначала собрать образ, а затем сразу перейти к его анализу:

root@kitploit:~
dive build -t <some-tag> .

Сборка на macOS (поддерживается только Docker):

root@kitploit:~
docker run --rm -it \
      -v /var/run/docker.sock:/var/run/docker.sock \
      -v  "$(pwd)":"$(pwd)" \
      -w "$(pwd)" \
      -v "$HOME/.dive.yaml":"$HOME/.dive.yaml" \
      docker.io/wagoodman/dive:latest build -t <some-tag> .

Кроме того, вы можете запустить это в вашем CI-пайплайне, чтобы убедиться, что минимальное пространство тратится впустую (это пропускает UI):

root@kitploit:~
CI=true dive <your-image>

Image

Это качество бета-версии! Не стесняйтесь создавать issue, если хотите новую функцию или нашли ошибку :)

Основные функции

Показ содержимого Docker-образа, разбитого по слоям

Когда вы выбираете слой слева, справа отображается содержимое этого слоя вместе со всеми предыдущими слоями. Кроме того, вы можете полностью исследовать дерево файлов с помощью клавиш со стрелками.

Отображение изменений в каждом слое

Файлы, которые были изменены, модифицированы, добавлены или удалены, отмечаются в дереве файлов. Это можно настроить для отображения изменений для конкретного слоя или совокупных изменений вплоть до этого слоя.

Оценка «эффективности образа»

Нижняя левая панель показывает основную информацию о слоях и экспериментальный показатель, который оценивает, сколько лишнего места занимает ваш образ. Это может быть из-за дублирования файлов между слоями, перемещения файлов между слоями или неполного удаления файлов. Отображаются как процентная «оценка», так и общий объем потраченного впустую места.

Быстрые циклы сборки/анализа

Вы можете собрать Docker-образ и сразу выполнить его анализ одной командой: dive build -t some-tag . Вам нужно лишь заменить команду docker build на ту же самую dive build.

Интеграция с CI

Анализируйте образ и получайте результат прохождения/неудачи на основе эффективности образа и потраченного впустую места. Просто установите CI=true в окружении при вызове любой команды dive.

Поддержка нескольких источников образов и контейнерных движков

С помощью опции --source вы можете выбрать, откуда загрузить образ контейнера:

root@kitploit:~
dive <your-image> --source <source>

или

root@kitploit:~
dive <source>://<your-image>

Допустимые опции source:

  • docker: Docker engine (опция по умолчанию)
  • docker-archive: Docker-архив Tar с диска
  • podman: Podman engine (только Linux)

Установка

Ubuntu/Debian

С помощью .deb-пакетов:

root@kitploit:~
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -fOL "https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.deb"
sudo apt install ./dive_${DIVE_VERSION}_linux_amd64.deb

Через snap:

root@kitploit:~
sudo snap install docker
sudo snap install dive
sudo snap connect dive:docker-executables docker:docker-executables
sudo snap connect dive:docker-daemon docker:docker-daemon

[!CAUTION] Метод Snap не рекомендуется, если вы установили Docker через apt-get, так как это может нарушить работу существующего Docker-демона.

См. также: https://github.com/wagoodman/dive/issues/546

RHEL/CentOS

root@kitploit:~
DIVE_VERSION=$(curl -sL "https://api.github.com/repos/wagoodman/dive/releases/latest" | grep '"tag_name":' | sed -E 's/.*"v([^"]+)".*/\1/')
curl -fOL "https://github.com/wagoodman/dive/releases/download/v${DIVE_VERSION}/dive_${DIVE_VERSION}_linux_amd64.rpm"
rpm -i dive_${DIVE_VERSION}_linux_amd64.rpm

Arch Linux

Доступен в extra репозитории и может быть установлен через pacman:

root@kitploit:~
pacman -S dive

Mac

Если вы используете Homebrew:

root@kitploit:~
brew install dive

Если вы используете MacPorts:

root@kitploit:~
sudo port install dive

Или загрузите последнюю сборку для Darwin со страницы релизов.

Windows

Если вы используете Chocolatey

root@kitploit:~
choco install dive

Если вы используете scoop

root@kitploit:~
scoop install main/dive

Если вы используете winget:

root@kitploit:~
winget install --id wagoodman.dive

Или загрузите последнюю сборку для Windows со страницы релизов.

Инструменты Go Требуется Go версии 1.10 или выше.

root@kitploit:~
go install github.com/wagoodman/dive@latest

Примечание: при установке таким способом вы не увидите правильную версию при запуске dive -v.

Nix/NixOS

На NixOS:

root@kitploit:~
nix-env -iA nixos.dive

На не-NixOS (Linux, Mac)

root@kitploit:~
nix-env -iA nixpkgs.dive

X-CMD

x-cmd — это набор инструментов для Posix Shell, предоставляющий легковесный менеджер пакетов, написанный на shell и awk.

root@kitploit:~
x env use dive

Docker

root@kitploit:~
docker pull docker.io/wagoodman/dive
# or alternatively
docker pull ghcr.io/wagoodman/dive

При запуске вам нужно будет подключить файл Docker-сокета:

root@kitploit:~
docker run --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    docker.io/wagoodman/dive:latest <dive arguments...>

Docker для Windows (показаны совместимые с PowerShell переносы строк; сверните в одну строку для совместимости с Command Prompt)

root@kitploit:~
docker run --rm -it `
    -v /var/run/docker.sock:/var/run/docker.sock `
    docker.io/wagoodman/dive:latest <dive arguments...>

Примечание: в зависимости от версии Docker, используемой локально, может потребоваться указать версию Docker API в переменной окружения:

root@kitploit:~
   DOCKER_API_VERSION=1.37 dive ...

или если вы запускаете с помощью Docker-образа:

root@kitploit:~
docker run --rm -it \
    -v /var/run/docker.sock:/var/run/docker.sock \
    -e DOCKER_API_VERSION=1.37 \
    docker.io/wagoodman/dive:latest <dive arguments...>

Если вы используете альтернативную среду выполнения (Colima и т.д.), то может потребоваться указать хост Docker в переменной окружения, чтобы загружать локальные образы:

root@kitploit:~
   export DOCKER_HOST=$(docker context inspect -f '{{ .Endpoints.docker.Host }}')

Интеграция с CI

При запуске dive с переменной окружения CI=true UI dive будет пропущен, и вместо этого будет проанализирован ваш Docker-образ с указанием прохождения/неудачи через код возврата. В настоящее время поддерживаются три метрики через файл .dive-ci, который можно разместить в корне вашего репозитория:

root@kitploit:~
rules:
  # If the efficiency is measured below X%, mark as failed.
  # Expressed as a ratio between 0-1.
  lowestEfficiency: 0.95

  # If the amount of wasted space is at least X or larger than X, mark as failed.
  # Expressed in B, KB, MB, and GB.
  highestWastedBytes: 20MB

  # If the amount of wasted space makes up for X% or more of the image, mark as failed.
  # Note: the base image layer is NOT included in the total image size.
  # Expressed as a ratio between 0-1; fails if the threshold is met or crossed.
  highestUserWastedPercent: 0.20

Вы можете переопределить путь к конфигурации CI с помощью опции --ci-config.

Комбинации клавиш

Конфигурация UI

Конфигурация не требуется, однако вы можете создать файл конфигурации и переопределить значения:

root@kitploit:~
# supported options are "docker" and "podman"
container-engine: docker
# continue with analysis even if there are errors parsing the image archive
ignore-errors: false
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 binding
keybinding:
  # Global bindings
  quit: ctrl+c
  toggle-view: tab
  filter-files: ctrl+f, ctrl+slash
  close-filter-files: esc
  up: up,k
  down: down,j
  left: left,h
  right: right,l

  # Layer view specific bindings
  compare-all: ctrl+a
  compare-layer: ctrl+l

  # File view specific bindings
  toggle-collapse-dir: space
  toggle-collapse-all-dir: ctrl+space
  toggle-added-files: ctrl+a
  toggle-removed-files: ctrl+r
  toggle-modified-files: ctrl+m
  toggle-unmodified-files: ctrl+u
  toggle-filetree-attributes: ctrl+b
  page-up: pgup,u
  page-down: pgdn,d

diff:
  # You can change the default files shown in the filetree (right pane). All diff types are shown by default.
  hide:
    - added
    - removed
    - modified
    - unmodified

filetree:
  # 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.5

  # Show the file attributes next to the filetree
  show-attributes: true

layer:
  # Enable showing all changes from this layer and every previous layer
  show-aggregated-changes: false

dive будет искать конфиги в следующих местах:

  • $XDG_CONFIG_HOME/dive/*.yaml
  • $XDG_CONFIG_DIRS/dive/*.yaml
  • ~/.config/dive/*.yaml
  • ~/.dive.yaml

.yml можно использовать вместо .yaml при желании.

Скачать инструмент
Комбинация клавишОписание
Ctrl + C или QВыход
TabПереключение между представлением слоя и дерева файлов
Ctrl + FФильтрация файлов
ESCЗакрыть фильтр файлов
PageUp или UПрокрутка на страницу вверх
PageDown или DПрокрутка на страницу вниз
Up или KПеремещение на одну строку вверх в пределах страницы
Down или JПеремещение на одну строку вниз в пределах страницы
Ctrl + AВид слоя: просмотр совокупных изменений образа
Ctrl + LВид слоя: просмотр изменений текущего слоя
SpaceВид дерева файлов: свернуть/развернуть каталог
Ctrl + SpaceВид дерева файлов: свернуть/развернуть все каталоги
Ctrl + AВид дерева файлов: показать/скрыть добавленные файлы
Ctrl + RВид дерева файлов: показать/скрыть удаленные файлы
Ctrl + MВид дерева файлов: показать/скрыть измененные файлы
Ctrl + UВид дерева файлов: показать/скрыть неизмененные файлы
Ctrl + BВид дерева файлов: показать/скрыть атрибуты файлов
PageUp или UВид дерева файлов: прокрутка на страницу вверх
PageDown или DВид дерева файлов: прокрутка на страницу вниз