# Soporte de glibc y musl en las Docker Hardened Images


Las Docker Hardened Images (DHI) están construidas para priorizar la seguridad sin
sacrificar la compatibilidad con el ecosistema de software libre y empresarial más amplio.
Un aspecto clave de esta compatibilidad es el soporte para las librerías estándar de Linux
más comunes: `glibc` y `musl`.

## ¿Qué son glibc y musl?

Cuando ejecutas contenedores basados en Linux, la librería C de la imagen juega un papel
clave en la forma en que las aplicaciones interactúan con el sistema operativo. La mayoría
de las distribuciones modernas de Linux dependen de una de las siguientes librerías C estándar:

- `glibc` (GNU C Library): La librería C estándar en distribuciones principales como Debian,
  Ubuntu y Red Hat Enterprise Linux. Cuenta con un amplio soporte y normalmente se considera
  la opción más compatible en diversos lenguajes, frameworks y software empresarial.

- `musl`: Una alternativa ligera a `glibc`, comúnmente utilizada en distribuciones mínimas
  como Alpine Linux. Aunque ofrece tamaños de imagen más pequeños y beneficios de rendimiento,
  `musl` no siempre es totalmente compatible con el software que espera `glibc`.

## Compatibilidad de DHI

Las imágenes DHI están disponibles tanto en variantes basadas en `glibc` (por ejemplo, Debian)
como basadas en `musl` (por ejemplo, Alpine). Para aplicaciones empresariales y entornos de
ejecución de lenguajes donde la compatibilidad es crítica, Docker recomienda utilizar imágenes
DHI basadas en glibc.

## Qué elegir, ¿glibc o musl?

Las Docker Hardened Images están disponibles tanto en variantes basadas en glibc (Debian)
como basadas en musl (Alpine), lo que te permite elegir la opción que mejor se adapte a tu
carga de trabajo.

Elige imágenes basadas en Debian (`glibc`) si:

- Necesitas una amplia compatibilidad con cargas de trabajo empresariales, entornos de
  ejecución de lenguajes o software propietario.
- Utilizas ecosistemas como .NET, Java o Python con extensiones nativas que dependen de `glibc`.
- Quieres minimizar el riesgo de errores en tiempo de ejecución debido a incompatibilidades de
  librerías.

Elige imágenes basadas en Alpine (`musl`) si:

- Quieres una huella mínima con tamaños de imagen más pequeños y una superficie de ataque reducida.
- Estás construyendo una pila de aplicaciones personalizada o estrechamente controlada donde las
  dependencias son conocidas y han sido probadas.
- Priorizas la velocidad de inicio y los despliegues ligeros sobre la máxima compatibilidad.

Si tienes dudas, comienza con una imagen basada en Debian para garantizar la compatibilidad,
y evalúa Alpine una vez que tengas la seguridad de cuáles son las dependencias de tu aplicación.
