# Tipos disponibles de Docker Hardened Images


Docker Hardened Images (DHI) es un catálogo completo de imágenes de contenedor
endurecidas para la seguridad, construidas para satisfacer diversas necesidades de
desarrollo y producción.

Puedes explorar el catálogo DHI en [Docker Hub](https://hub.docker.com/search?q=&image_filter=store%2Cdhi)
o utilizar la [CLI de DHI](/dhi/how-to/cli/) para examinar las imágenes, etiquetas y metadatos
disponibles desde la línea de comandos.

## Imágenes de framework y aplicación

DHI incluye una selección de frameworks populares e imágenes de aplicación, cada uno de ellos
endurecido y mantenido para garantizar la seguridad y el cumplimiento. Estas imágenes se
integran en los flujos de trabajo existentes, para que los desarrolladores puedan concentrarse
en construir aplicaciones sin comprometer la seguridad.

Por ejemplo, podrías encontrar repositorios como los siguientes en el catálogo DHI:

- `node`: framework para aplicaciones Node.js
- `python`: framework para aplicaciones Python
- `nginx`: imagen de servidor web

## Distribuciones de imágenes base

Las Docker Hardened Images están disponibles en diferentes opciones de imagen base, lo que te
proporciona flexibilidad para elegir la que mejor se adapte a tu entorno y a los requisitos
de tu carga de trabajo:

- Imágenes basadas en Debian: Una buena opción si ya estás trabajando en entornos basados en
  `glibc`. Debian se utiliza ampliamente y ofrece una sólida compatibilidad en muchos
  ecosistemas de lenguajes y sistemas empresariales.

- Imágenes basadas en Alpine: Una opción más pequeña y ligera que utiliza `musl` libc. Estas
  imágenes tienden a ser de tamaño reducido y, por lo tanto, se descargan más rápido y tienen
  una huella menor.

Cada imagen mantiene una capa de ejecución mínima y segura mediante la eliminación de componentes
no esenciales como shells, gestores de paquetes y herramientas de depuración. Esto ayuda a
reducir la superficie de ataque al mismo tiempo que conserva la compatibilidad con los entornos de
ejecución comunes. Para mantener esta base ligera y segura, DHI estandariza Debian para las
imágenes basadas en glibc, lo que proporciona una amplia compatibilidad a la vez que minimiza la
complejidad y la sobrecarga de mantenimiento.

Algunos ejemplos de etiquetas son:

- `3.9.23-alpine3.21`: imagen basada en Alpine para Python 3.9.23
- `3.9.23-debian12`: imagen basada en Debian para Python 3.9.23

Si tienes dudas sobre cuál elegir, comienza con la base con la que ya estés familiarizado.
Debian suele ofrecer la compatibilidad más amplia.

## Variantes de desarrollo y de tiempo de ejecución

Para adaptarse a las diferentes etapas del ciclo de vida de la aplicación, DHI ofrece todas
las imágenes de frameworks de lenguaje y una selección de imágenes de aplicación en dos variantes:

- Imágenes de desarrollo (`-dev`): Equipadas con las herramientas y librerías de desarrollo
  necesarias, estas imágenes facilitan la construcción y prueba de aplicaciones en un entorno
  seguro. Incluyen un shell, un gestor de paquetes, un usuario root y otras herramientas
  necesarias para el desarrollo.

- Imágenes de tiempo de ejecución (runtime): Sin herramientas de desarrollo, estas imágenes
  contienen únicamente los componentes esenciales necesarios para ejecutar aplicaciones, lo que
  garantiza una superficie de ataque mínima en producción.

Esta separación admite construcciones en varias etapas (multi-stage builds), lo que permite a
los desarrolladores compilar código en un entorno de construcción seguro y desplegarlo
utilizando una imagen de ejecución ligera.

Por ejemplo, podrías encontrar etiquetas como las siguientes en un repositorio DHI:

- `3.9.23-debian12`: imagen de ejecución para Python 3.9.23
- `3.9.23-debian12-dev`: imagen de desarrollo para Python 3.9.23

## Variantes FIPS y STIG




Algunas Docker Hardened Images incluyen una variante `-fips`. Estas variantes utilizan
módulos criptográficos que han sido validados bajo [FIPS 140](/dhi/core-concepts/fips/),
un estándar del gobierno de los EE. UU. para operaciones criptográficas seguras.

Las variantes FIPS están diseñadas para ayudar a las organizaciones a cumplir con los requisitos
regulatorios y de conformidad relacionados con el uso criptográfico en entornos sensibles o
regulados.

Puedes reconocer las variantes FIPS por su etiqueta que incluye `-fips`.

Por ejemplo:
- `3.13-fips`: variante FIPS de la imagen de Python 3.13
- `3.9.23-debian12-fips`: variante FIPS de la imagen de Python 3.9.23 basada en Debian

Las variantes FIPS se pueden utilizar de la misma manera que cualquier otra Docker Hardened Image
y son ideales para equipos que operan en industrias reguladas o bajo marcos de cumplimiento
que requieren validación criptográfica.

Además de las variantes FIPS, algunas Docker Hardened Images también incluyen variantes listas
para STIG (STIG-ready). Estas imágenes se escanean contra perfiles personalizados basados en
STIG y vienen con atestaciones de escaneo STIG firmadas para respaldar auditorías e informes de
cumplimiento. Para identificar las variantes listas para STIG, busca la indicación **STIG** en la
columna **Compliance** de la lista de etiquetas de imagen en el catálogo de Docker Hub.

## Variantes de compatibilidad

Algunas Docker Hardened Images incluyen una variante de compatibilidad. Estas variantes
proporcionan herramientas y configuraciones adicionales para casos de uso específicos sin
sobrecargar las imágenes base mínimas.

Las variantes de compatibilidad se crean para admitir:

- Compatibilidad con Helm charts: Aplicaciones desplegadas a través de Helm charts y Kubernetes
  que requieren configuraciones de ejecución específicas o utilidades para una integración directa
  con los Helm charts populares.

- Casos de uso de aplicaciones especiales: Aplicaciones que necesitan herramientas opcionales
  no incluidas en la imagen mínima.

Al ofrecerlas como variantes de imagen independientes, DHI garantiza que las imágenes mínimas
sigan siendo ligeras y seguras, al tiempo que proporciona las herramientas que necesitas en
variantes dedicadas. Este enfoque mantiene una superficie de ataque mínima para despliegues
estándar a la vez que admite requisitos especializados cuando es necesario.

Puedes reconocer las variantes de compatibilidad por su etiqueta que incluye `-compat`.

Utiliza variantes de compatibilidad cuando tu despliegue requiera herramientas adicionales
más allá del entorno de ejecución mínimo, como cuando utilices Helm charts o aplicaciones con
requisitos de herramientas específicos.

