Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
dive — Un outil pour explorer chaque couche dans une image Docker | Kitploit
Outils/GitHubGitHub/wagoodman/dive
Utilitaires GénérauxSécurité des Conteneurs
GitHubwagoodman/dive

dive

Un outil pour explorer chaque couche dans une image Docker

Voir le dépôt
54.4k2.0k10il y a 1 anVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

dive

GitHub release Validations Go Report Card License: MIT Donate

Un outil pour explorer une image Docker, le contenu des couches, et découvrir des moyens de réduire la taille de votre image Docker/OCI.

Image

Pour analyser une image Docker, exécutez simplement dive avec un tag/id/digest d'image :

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

ou vous pouvez utiliser dive directement avec Docker :

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

# par exemple
dive nginx:latest
Télécharger l’outil

ou si vous voulez construire votre image puis passer directement à son analyse :

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

Construction sur macOS (supportant uniquement le moteur de conteneur 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 <un-tag> .

De plus, vous pouvez exécuter ceci dans votre pipeline CI pour vous assurer de minimiser l'espace gaspillé (cela ignore l'interface utilisateur) :

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

Image

Ceci est de qualité bêta ! N'hésitez pas à soumettre un problème si vous voulez une nouvelle fonctionnalité ou trouvez un bug :)

Fonctionnalités de base

Afficher le contenu de l'image Docker décomposé par couche

Lorsque vous sélectionnez une couche à gauche, le contenu de cette couche combiné avec toutes les couches précédentes est affiché à droite. De plus, vous pouvez explorer entièrement l'arborescence des fichiers avec les touches fléchées.

Indiquer ce qui a changé dans chaque couche

Les fichiers qui ont changé, été modifiés, ajoutés ou supprimés sont indiqués dans l'arborescence. Cela peut être ajusté pour afficher les modifications pour une couche spécifique, ou les modifications agrégées jusqu'à cette couche.

Estimer l'efficacité de l'image

Le volet en bas à gauche affiche les informations de base de la couche et une métrique expérimentale qui estimera la quantité d'espace gaspillé dans votre image. Cela peut provenir de la duplication de fichiers entre les couches, du déplacement de fichiers entre les couches, ou de la suppression incomplète de fichiers. Un pourcentage de score et l'espace total gaspillé sont fournis.

Cycles rapides de construction/analyse

Vous pouvez construire une image Docker et effectuer une analyse immédiate avec une seule commande : dive build -t some-tag .

Vous devez simplement remplacer votre commande docker build par la même commande dive build.

Intégration CI

Analysez une image et obtenez un résultat de succès/échec basé sur l'efficacité de l'image et l'espace gaspillé. Il suffit de définir CI=true dans l'environnement lors de l'appel de toute commande dive valide.

Plusieurs sources d'images et moteurs de conteneurs pris en charge

Avec l'option --source, vous pouvez sélectionner d'où récupérer l'image du conteneur :

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

ou

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

Avec les options source valides suivantes :

  • docker : moteur Docker (l'option par défaut)
  • docker-archive : une archive Docker Tar depuis le disque
  • podman : moteur Podman (linux uniquement)

Installation

Ubuntu/Debian

En utilisant les paquets 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

En utilisant 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] La méthode Snap n'est pas recommandée si vous avez installé Docker via apt-get, car elle pourrait casser votre démon Docker existant.

Voir aussi : 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

Disponible dans le dépôt extra et peut être installé via pacman :

root@kitploit:~
pacman -S dive

Mac

Si vous utilisez Homebrew :

root@kitploit:~
brew install dive

Si vous utilisez MacPorts :

root@kitploit:~
sudo port install dive

Ou téléchargez la dernière version Darwin depuis la page des versions.

Windows

Si vous utilisez Chocolatey

root@kitploit:~
choco install dive

Si vous utilisez scoop

root@kitploit:~
scoop install main/dive

Si vous utilisez winget :

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

Ou téléchargez la dernière version Windows depuis la page des versions.

Outils Go Nécessite Go version 1.10 ou supérieure.

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

Note : en installant de cette façon, vous ne verrez pas une version correcte en exécutant dive -v.

Nix/NixOS

Sur NixOS :

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

Sur non-NixOS (Linux, Mac)

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

X-CMD

x-cmd est une boîte à outils pour shell Posix, offrant un gestionnaire de paquets léger construit avec shell et awk.

root@kitploit:~
x env use dive

Docker

root@kitploit:~
docker pull docker.io/wagoodman/dive
# ou alternativement
docker pull ghcr.io/wagoodman/dive

Lors de l'exécution, vous devrez inclure le fichier de socket Docker :

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

Docker pour Windows (affichage de sauts de ligne compatibles PowerShell ; réduire à une seule ligne pour la compatibilité avec l'invite de commande)

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

Remarque : selon la version de docker que vous exécutez localement, vous devrez peut-être spécifier la version de l'API docker comme variable d'environnement :

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

ou si vous exécutez avec une image 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 <arguments dive...>

si vous utilisez un runtime alternatif (Colima etc), vous devrez peut-être spécifier l'hôte docker comme variable d'environnement pour extraire les images locales :

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

Intégration CI

Lorsque vous exécutez dive avec la variable d'environnement CI=true, l'interface utilisateur de dive sera contournée et analysera votre image docker, donnant une indication de réussite/échec via le code de retour. Actuellement, trois métriques sont supportées via un fichier .dive-ci que vous pouvez placer à la racine de votre dépôt :

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

Vous pouvez remplacer le chemin de configuration CI avec l'option --ci-config.

Raccourcis clavier

Raccourci clavierDescription
Ctrl + C ou QQuitter
TabBasculer entre les vues des couches et de l'arborescence
Ctrl + FFiltrer les fichiers
ESCFermer le filtre des fichiers
PageUp ou UDéfiler d'une page vers le haut
PageDown ou DDéfiler d'une page vers le bas
Up ou KMonter d'une ligne dans une page
Down ou JDescendre d'une ligne dans une page
Ctrl + AVue des couches : voir les modifications d'image agrégées
Ctrl + LVue des couches : voir les modifications de la couche actuelle
SpaceVue de l'arborescence : réduire/développer un répertoire
Ctrl + SpaceVue de l'arborescence : réduire/développer tous les répertoires
Ctrl + AVue de l'arborescence : afficher/masquer les fichiers ajoutés
Ctrl + RVue de l'arborescence : afficher/masquer les fichiers supprimés
Ctrl + MVue de l'arborescence : afficher/masquer les fichiers modifiés
Ctrl + UVue de l'arborescence : afficher/masquer les fichiers non modifiés
Ctrl + BVue de l'arborescence : afficher/masquer les attributs de fichier
PageUp ou UVue de l'arborescence : défiler d'une page vers le haut
PageDown ou DVue de l'arborescence : défiler d'une page vers le bas

Configuration de l'interface utilisateur

Aucune configuration n'est nécessaire, cependant, vous pouvez créer un fichier de configuration et surcharger les valeurs :

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 recherchera les configurations dans les emplacements suivants :

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

.yml peut être utilisé à la place de .yaml si souhaité.