Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
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é.

FluxContactConfidentialité© 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.0k109il y a 13 joursVé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 de ses couches et découvrir des moyens de réduire la taille de votre image Docker/OCI.

Image

Pour analyser une image Docker, il suffit d'exécuter dive avec un tag/id/digest d'image :

dive <your-image-tag>

ou vous pouvez plonger directement avec Docker :

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

ou si vous souhaitez construire votre image, passez directement à son analyse :

dive build -t <some-tag> .

Compilation sur macOS (prenant en charge uniquement le moteur de conteneur Docker) :

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> .

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

CI=true dive <your-image>

Image

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

Fonctionnalités de base

Afficher le contenu d'une image Docker décomposé par couche

Lorsque vous sélectionnez une couche à gauche, le contenu de cette couche combiné à toutes les couches précédentes s'affiche à droite. Vous pouvez également 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 été modifiés, ajoutés ou supprimés sont indiqués dans l'arborescence des fichiers. Cela peut être ajusté pour afficher les changements d'une couche spécifique, ou les changements agrégés jusqu'à cette couche.

Estimer l'« efficacité de l'image »

Le panneau inférieur gauche affiche les informations de base sur les couches ainsi qu'une métrique expérimentale qui estime l'espace gaspillé contenu dans votre image. Cela peut provenir de la duplication de fichiers entre les couches, du déplacement de fichiers entre les couches, ou de fichiers qui ne sont pas entièrement supprimés. Un « score » en pourcentage ainsi que l'espace total gaspillé sont fournis.

Cycles de build/analyse rapides

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

Il vous suffit de remplacer votre commande docker build par la même commande dive build.

Intégration CI

Analysez une image et obtenez un résultat de réussite/échec basé sur l'efficacité de l'image et l'espace gaspillé. Définissez simplement CI=true dans l'environnement lors de l'invocation de toute commande dive valide.

Sources d'images et moteurs de conteneurs multiples pris en charge

Avec l'option --source, vous pouvez sélectionner la source à partir de laquelle récupérer l'image de conteneur :

dive <your-image> --source <source>

ou préfixez l'image avec un schéma <source>:// :

dive <source>://<your-image>

Les sources basées sur des fichiers prennent également la forme <source>:<path> utilisée par les autres outils anchore (par exemple dive oci-dir:./layout). Pour toute autre source, un simple deux-points est interprété comme un nom d'image et un tag, donc dive docker:dind analyse l'image docker:dind.

SourceLit l'image depuis
dockerle moteur Docker (par défaut). Les images absentes localement sont récupérées via l'API docker, avec les identifiants de votre configuration docker. DOCKER_HOST, DOCKER_CONTEXT et le contexte docker actuel sont pris en compte
podmanPodman. Sous linux, le store local est lu directement (aucun socket nécessaire, voir containers-storage, et un nom court comme myapp trouve aussi le localhost/myapp de podman), avec repli sur le socket podman. Sous macOS, le socket API de la machine podman en cours d'exécution est utilisé (trouvé via podman machine inspect) ; CONTAINER_HOST=unix://... le remplace, les connexions ssh sont refusées
docker-archiveune archive tar docker save sur disque, ou une archive OCI (docker-tar est un alias)
oci-archiveune archive tar de layout d'image OCI sur disque
oci-dirun répertoire de layout d'image OCI sur disque
registryun registre, sans moteur de conteneurs (identifiants de votre configuration docker). Les registres sur des adresses IP privées sont refusés, car ils seraient joints en http simple
containerdle démon containerd (CONTAINERD_NAMESPACE sélectionne l'espace de noms)
containers-storagele store local podman/buildah (linux uniquement, voir ci-dessous)
autole détecter : d'abord les fichiers sur disque, puis docker, podman, containerd et containers-storage, puis un pull depuis un registre. La source choisie est indiquée, car une image qu'aucun moteur local ne possède provient discrètement d'un registre (Docker Hub pour un nom court). Valide uniquement pour --source, pas comme schéma

Pour une image multi-plateforme, --platform choisit la variante à analyser (par exemple --platform linux/arm64). Une archive tar docker save ne contient qu'une seule plateforme, dive le signale lorsqu'elle ne correspond pas.

La prise en charge de containers-storage n'est compilée qu'avec le tag de build containers_image_openpgp, que possèdent les builds de release linux (et l'image docker). Sans lui, la source indique qu'elle n'est pas disponible. Pour le compiler vous-même : go build -tags containers_image_openpgp,exclude_graphdriver_btrfs ./cmd/dive.

Export JSON

--json <path> ignore l'interface et écrit l'analyse dans un fichier. L'id de chaque couche est le diff ID de la couche (la même valeur que digestId).

Installation

Ubuntu/Debian

Via les debs :

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

Utilisation de snap :

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

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

Télécharger l’outil