Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
dive — Una herramienta para explorar cada capa en una imagen Docker. | Kitploit
Herramientas/GitHubGitHub/wagoodman/dive
Utilidades de Propósito GeneralSeguridad de Contenedores
GitHubwagoodman/dive

dive

Una herramienta para explorar cada capa en una imagen Docker.

Ver Repositorio
54.4k2.0k12hace 1 añoRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

dive

GitHub release Validations Go Report Card License: MIT Donate

Una herramienta para explorar una imagen Docker, el contenido de sus capas y descubrir formas de reducir el tamaño de tu imagen Docker/OCI.

Imagen

Para analizar una imagen Docker simplemente ejecuta dive con una etiqueta/id/digest de imagen:

root@kitploit:~
dive <tu-etiqueta-de-imagen>

O puedes usar dive directamente con Docker:

root@kitploit:~
alias dive="docker run -ti --rm  -v /var/run/docker.sock:/var/run/docker.sock docker.io/wagoodman/dive"
dive <tu-etiqueta-de-imagen>

# por ejemplo
dive nginx:latest
Descargar herramienta

O si quieres construir tu imagen y luego saltar directamente a analizarla:

root@kitploit:~
dive build -t <alguna-etiqueta> .

Construir en macOS (soporta solo el motor de contenedores 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 <alguna-etiqueta> .

Además puedes ejecutar esto en tu pipeline de CI para asegurarte de mantener el espacio desperdiciado al mínimo (esto omite la interfaz):

root@kitploit:~
CI=true dive <tu-imagen>

Imagen

¡Esto es calidad beta! No dudes en enviar un issue si quieres una nueva función o encuentras un bug :)

Funcionalidades básicas

Mostrar el contenido de la imagen Docker desglosado por capa

Cuando seleccionas una capa a la izquierda, se te muestra el contenido de esa capa combinado con todas las capas anteriores a la derecha. Además, puedes explorar completamente el árbol de archivos con las teclas de flecha.

Indicar qué ha cambiado en cada capa

Los archivos que han cambiado, sido modificados, añadidos o eliminados se indican en el árbol de archivos. Esto se puede ajustar para mostrar los cambios de una capa específica, o los cambios agregados hasta esta capa.

Estimar la "eficiencia de la imagen"

El panel inferior izquierdo muestra información básica de la capa y una métrica experimental que adivinará cuánto espacio desperdiciado contiene tu imagen. Esto puede deberse a duplicar archivos entre capas, mover archivos entre capas o no eliminar archivos por completo. Se proporciona tanto un porcentaje de "puntuación" como el total de espacio desperdiciado en archivos.

Ciclos rápidos de construcción/análisis

Puedes construir una imagen Docker y realizar un análisis inmediato con un solo comando: dive build -t alguna-etiqueta .

Solo necesitas reemplazar tu comando docker build con el mismo comando dive build.

Integración con CI

Analiza una imagen y obtén un resultado de aprobado/reprobado basado en la eficiencia de la imagen y el espacio desperdiciado. Simplemente establece CI=true en el entorno al invocar cualquier comando válido de dive.

Múltiples fuentes de imagen y motores de contenedores compatibles

Con la opción --source, puedes seleccionar de dónde obtener la imagen del contenedor:

root@kitploit:~
dive <tu-imagen> --source <origen>

o

root@kitploit:~
dive <origen>://<tu-imagen>

Con las opciones de origen válidas de la siguiente manera:

  • docker: motor Docker (la opción por defecto)
  • docker-archive: un archivo tar de Docker desde el disco
  • podman: motor Podman (solo Linux)

Instalación

Ubuntu/Debian

Usando debs:

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] El método Snap no se recomienda si instalaste Docker mediante apt-get, ya que podría romper tu demonio Docker existente.

Ver también: 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 en el repositorio extra y se puede instalar mediante pacman:

root@kitploit:~
pacman -S dive

Mac

Si usas Homebrew:

root@kitploit:~
brew install dive

Si usas MacPorts:

root@kitploit:~
sudo port install dive

O descarga la última compilación Darwin desde la página de lanzamientos.

Windows

Si usas Chocolatey

root@kitploit:~
choco install dive

Si usas scoop

root@kitploit:~
scoop install main/dive

Si usas winget:

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

O descarga la última compilación Windows desde la página de lanzamientos.

Herramientas Go Requiere Go versión 1.10 o superior.

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

Nota: instalando de esta manera no verás una versión adecuada al ejecutar dive -v.

Nix/NixOS

En NixOS:

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

En no-NixOS (Linux, Mac)

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

X-CMD

x-cmd es un toolbox para Shell Posix, que ofrece un gestor de paquetes ligero construido con shell y awk.

root@kitploit:~
x env use dive

Docker

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

Al ejecutarlo necesitarás incluir el archivo del socket Docker:

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

Docker para Windows (mostrando saltos de línea compatibles con PowerShell; colapsar a una sola línea para compatibilidad con Command Prompt)

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

Nota: dependiendo de la versión de Docker que estés ejecutando localmente, puede que necesites especificar la versión de la API de Docker como variable de entorno:

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

o si ejecutas con una imagen 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 <argumentos de dive...>

si estás usando un runtime alternativo (Colima, etc.) puede que necesites especificar el host de Docker como variable de entorno para poder extraer imágenes locales:

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

Integración con CI

Al ejecutar dive con la variable de entorno CI=true, se omitirá la interfaz de dive y en su lugar analizará tu imagen Docker, dando una indicación de aprobado/reprobado mediante el código de retorno. Actualmente hay tres métricas compatibles mediante un archivo .dive-ci que puedes colocar en la raíz de tu repositorio:

root@kitploit:~
rules:
  # Si la eficiencia se mide por debajo de X%, marcar como fallido.
  # Expresado como una proporción entre 0 y 1.
  lowestEfficiency: 0.95

  # Si la cantidad de espacio desperdiciado es al menos X o mayor que X, marcar como fallido.
  # Expresado en B, KB, MB y GB.
  highestWastedBytes: 20MB

  # Si la cantidad de espacio desperdiciado constituye X% o más de la imagen, marcar como fallido.
  # Nota: la capa base de la imagen NO está incluida en el tamaño total de la imagen.
  # Expresado como una proporción entre 0 y 1; falla si se alcanza o supera el umbral.
  highestUserWastedPercent: 0.20

Puedes sobrescribir la ruta de configuración de CI con la opción --ci-config.

Atajos de teclado

Atajo de tecladoDescripción
Ctrl + C o QSalir
TabCambiar entre las vistas de capa y árbol de archivos
Ctrl + FFiltrar archivos
ESCCerrar filtro de archivos
PageUp o UDesplazar hacia arriba una página
PageDown o DDesplazar hacia abajo una página
Up o KMoverse una línea hacia arriba dentro de una página
Down o JMoverse una línea hacia abajo dentro de una página
Ctrl + AVista de capa: ver modificaciones agregadas de la imagen
Ctrl + LVista de capa: ver modificaciones de la capa actual
SpaceVista de árbol de archivos: colapsar/expandir un directorio
Ctrl + SpaceVista de árbol de archivos: colapsar/expandir todos los directorios
Ctrl + AVista de árbol de archivos: mostrar/ocultar archivos añadidos
Ctrl + RVista de árbol de archivos: mostrar/ocultar archivos eliminados
Ctrl + MVista de árbol de archivos: mostrar/ocultar archivos modificados
Ctrl + UVista de árbol de archivos: mostrar/ocultar archivos no modificados
Ctrl + BVista de árbol de archivos: mostrar/ocultar atributos de archivo
PageUp o UVista de árbol de archivos: desplazar hacia arriba una página
PageDown o DVista de árbol de archivos: desplazar hacia abajo una página

Configuración de la interfaz

No es necesaria ninguna configuración, sin embargo, puedes crear un archivo de configuración y sobrescribir valores:

root@kitploit:~
# las opciones soportadas son "docker" y "podman"
container-engine: docker
# continuar con el análisis incluso si hay errores al analizar el archivo de imagen
ignore-errors: false
log:
  enabled: true
  path: ./dive.log
  level: info

# Nota: puedes especificar múltiples atajos separando los valores con una coma.
# Nota: la sugerencia de la interfaz se deriva del primer atajo
keybinding:
  # Atajos globales
  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

  # Atajos específicos de la vista de capa
  compare-all: ctrl+a
  compare-layer: ctrl+l

  # Atajos específicos de la vista de archivo
  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:
  # Puedes cambiar los archivos predeterminados que se muestran en el árbol de archivos (panel derecho). Todos los tipos de diff se muestran por defecto.
  hide:
    - added
    - removed
    - modified
    - unmodified

filetree:
  # El estado de colapso de directorios por defecto
  collapse-dir: false

  # El porcentaje del ancho de pantalla que debe ocupar el árbol de archivos en la pantalla (debe ser >0 y <1)
  pane-width: 0.5

  # Mostrar los atributos de archivo junto al árbol de archivos
  show-attributes: true

layer:
  # Activar mostrar todos los cambios desde esta capa y todas las capas anteriores
  show-aggregated-changes: false

dive buscará configuraciones en las siguientes ubicaciones:

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

Se puede usar .yml en lugar de .yaml si se desea.