Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/wagoodman/dive
Utilità GenericheSicurezza dei Contenitori
GitHubwagoodman/dive

dive

Uno strumento per esplorare ogni layer in un'immagine Docker

Vedi Repository
54.4k2.0k1 anno faRevisionato da Kitploit

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

dive

GitHub release Validations Go Report Card License: MIT Donate

Uno strumento per esplorare un'immagine Docker, il contenuto dei layer e scoprire modi per ridurre le dimensioni della tua immagine Docker/OCI.

Image

Per analizzare un'immagine Docker, esegui semplicemente dive con un tag/id/digest dell'immagine:

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

oppure puoi usare direttamente dive con 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>

# per esempio
dive nginx:latest

oppure se vuoi creare la tua immagine e poi passare direttamente all'analisi:

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

Compilazione su macOS (supporta solo il motore contenitori 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> .

Inoltre, puoi eseguirlo nella tua pipeline CI per assicurarti di mantenere al minimo lo spazio sprecato (salta l'interfaccia):

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

Image

Questa è una versione beta! Sentiti libero di aprire un problema se vuoi una nuova funzionalità o trovi un bug :)

Funzionalità di base

Mostra il contenuto dell'immagine Docker suddiviso per layer

Quando selezioni un layer a sinistra, viene mostrato il contenuto di quel layer combinato con tutti i layer precedenti a destra. Inoltre, puoi esplorare completamente l'albero dei file con i tasti freccia.

Indica cosa è cambiato in ogni layer

I file che sono stati modificati, aggiunti o rimossi vengono indicati nell'albero dei file. Questo può essere regolato per mostrare le modifiche per un layer specifico o le modifiche aggregate fino a questo layer.

Stima dell'"efficienza dell'immagine"

Il pannello in basso a sinistra mostra le informazioni di base del layer e una metrica sperimentale che stima quanto spazio sprecato contiene la tua immagine. Questo potrebbe derivare dalla duplicazione di file tra i layer, dallo spostamento di file tra i layer o dalla rimozione non completa dei file. Vengono forniti sia una percentuale "punteggio" che lo spazio totale sprecato.

Cicli rapidi di build/analisi

Puoi creare un'immagine Docker ed eseguire un'analisi immediata con un solo comando: dive build -t some-tag .

Devi solo sostituire il tuo comando docker build con lo stesso comando dive build.

Integrazione CI

Analizza un'immagine e ottieni un risultato di superato/non superato basato sull'efficienza dell'immagine e sullo spazio sprecato. Basta impostare CI=true nell'ambiente quando si invoca un comando dive valido.

Supporto di più sorgenti di immagini e motori contenitori

Con l'opzione --source, puoi selezionare da dove recuperare l'immagine del contenitore:

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

oppure

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

Con le opzioni source valide:

  • docker: motore Docker (opzione predefinita)
  • docker-archive: un archivio Tar Docker dal disco
  • podman: motore Podman (solo Linux)

Installazione

Ubuntu/Debian

Usando i 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

Usando 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] Il metodo Snap non è consigliato se hai installato Docker tramite apt-get, poiché potrebbe rompere il demone Docker esistente.

Vedi anche: 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

Disponibile nel repository extra e può essere installato tramite pacman:

root@kitploit:~
pacman -S dive

Mac

Se usi Homebrew:

root@kitploit:~
brew install dive

Se usi MacPorts:

root@kitploit:~
sudo port install dive

Oppure scarica l'ultima build Darwin dalla pagina delle release.

Windows

Se usi Chocolatey

root@kitploit:~
choco install dive

Se usi scoop

root@kitploit:~
scoop install main/dive

Se usi winget:

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

Oppure scarica l'ultima build Windows dalla pagina delle release.

Strumenti Go Richiede la versione 1.10 o successiva di Go.

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

Nota: installando in questo modo non vedrai una versione corretta quando esegui dive -v.

Nix/NixOS

Su NixOS:

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

Su non-NixOS (Linux, Mac)

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

X-CMD

x-cmd è una toolbox per Posix Shell che offre un gestore di pacchetti leggero costruito utilizzando shell e awk.

root@kitploit:~
x env use dive

Docker

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

Durante l'esecuzione dovrai includere il file del socket Docker:

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

Docker per Windows (mostra interruzioni di riga compatibili con PowerShell; comprimi in una singola riga per la compatibilità con il prompt dei comandi)

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

Nota: a seconda della versione di Docker che stai utilizzando localmente, potrebbe essere necessario specificare la versione dell'API Docker come variabile d'ambiente:

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

oppure se stai eseguendo con un'immagine 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...>

se stai utilizzando un runtime alternativo (Colima, ecc.) potrebbe essere necessario specificare l'host Docker come variabile d'ambiente per poter estrarre immagini locali:

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

Integrazione CI

Quando si esegue dive con la variabile d'ambiente CI=true, l'interfaccia utente di dive viene bypassata e analizzerà invece la tua immagine Docker, fornendo un indicazione di superato/non superato tramite codice di uscita. Attualmente sono supportate tre metriche tramite un file .dive-ci che puoi mettere nella radice del tuo repository:

root@kitploit:~
rules:
  # Se l'efficienza è misurata al di sotto di X%, segna come fallito.
  # Espresso come rapporto tra 0 e 1.
  lowestEfficiency: 0.95

  # Se la quantità di spazio sprecato è almeno X o maggiore di X, segna come fallito.
  # Espresso in B, KB, MB e GB.
  highestWastedBytes: 20MB

  # Se la quantità di spazio sprecato costituisce X% o più dell'immagine, segna come fallito.
  # Nota: il layer dell'immagine base NON è incluso nella dimensione totale dell'immagine.
  # Espresso come rapporto tra 0 e 1; fallisce se la soglia viene raggiunta o superata.
  highestUserWastedPercent: 0.20

Puoi sovrascrivere il percorso di configurazione CI con l'opzione --ci-config.

Tasti di scelta rapida

Configurazione dell'interfaccia

Nessuna configurazione è necessaria, tuttavia puoi creare un file di configurazione e sovrascrivere i valori:

root@kitploit:~
# le opzioni supportate sono "docker" e "podman"
container-engine: docker
# continua con l'analisi anche se ci sono errori nell'analisi dell'archivio immagine
ignore-errors: false
log:
  enabled: true
  path: ./dive.log
  level: info

# Nota: puoi specificare più associazioni separando i valori con una virgola.
# Nota: i suggerimenti dell'interfaccia derivano dalla prima associazione
keybinding:
  # Associazione globali
  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

  # Associazione specifiche per la vista layer
  compare-all: ctrl+a
  compare-layer: ctrl+l

  # Associazione specifiche per la vista file
  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:
  # Puoi cambiare i file predefiniti mostrati nell'albero dei file (riquadro destro). Tutti i tipi di diff sono mostrati per impostazione predefinita.
  hide:
    - added
    - removed
    - modified
    - unmodified

filetree:
  # Lo stato di compressione predefinito delle directory
  collapse-dir: false

  # La percentuale di larghezza dello schermo che l'albero dei file dovrebbe occupare (deve essere >0 e <1)
  pane-width: 0.5

  # Mostra gli attributi del file accanto all'albero
  show-attributes: true

layer:
  # Abilita la visualizzazione di tutte le modifiche da questo layer e da ogni layer precedente
  show-aggregated-changes: false

dive cercherà i file di configurazione nelle seguenti posizioni:

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

.yml può essere utilizzato al posto di .yaml se desiderato.

Scarica lo strumento
TastoDescrizione
Ctrl + C o QEsci
TabPassa tra le viste layer e albero dei file
Ctrl + FFiltra i file
ESCChiudi filtro file
PageUp o UScorri su di una pagina
PageDown o DScorri giù di una pagina
Su o KSposta su di una riga all'interno di una pagina
Giù o JSposta giù di una riga all'interno di una pagina
Ctrl + AVista layer: vedi le modifiche aggregate dell'immagine
Ctrl + LVista layer: vedi le modifiche del layer corrente
SpazioVista albero file: comprimi/espandi una directory
Ctrl + SpazioVista albero file: comprimi/espandi tutte le directory
Ctrl + AVista albero file: mostra/nascondi file aggiunti
Ctrl + RVista albero file: mostra/nascondi file rimossi
Ctrl + MVista albero file: mostra/nascondi file modificati
Ctrl + UVista albero file: mostra/nascondi file non modificati
Ctrl + BVista albero file: mostra/nascondi attributi file
PageUp o UVista albero file: scorri su di una pagina
PageDown o DVista albero file: scorri giù di una pagina