Imágenes distroless: de 840 MB a 52 MB

Clase 5 de 34Curso de Docker Avanzado

Resumen

Las imágenes distroless permiten reducir drásticamente el tamaño de tus contenedores sin sacrificar requisitos de ejecución. Aquí verás cómo, con multi-stage y un ejemplo en Python 3, se pasa de 840 MB a 52 MB, con builds más rápidos y despliegues más eficientes.

¿Qué es distroless y cómo optimiza tus imágenes Docker?

Las distroless no eliminan Linux: eliminan lo innecesario. La idea es no pensar en una distribución completa, sino usar una base más pequeña, compacta y ajustada al servicio. Así logras imágenes angostas en tamaño y listas para producción.

¿Cómo se relaciona distroless con serverless y wireless?

  • La analogía aclara el concepto.
  • En wireless no usas cables, pero existen en la infraestructura.
  • En serverless no administras el servidor, pero sigue ahí.
  • En distroless no “desaparece” Linux: simplemente usas una distro mínima.

¿Qué papel cumple Debian en estas imágenes distroless?

  • Muchas variantes se basan en Debian.
  • Verás opciones como Debian o No SSL Debian.
  • La elección depende de requisitos del servicio.

¿Qué considerar sobre arquitecturas?

  • Revisa las arquitecturas soportadas por cada imagen.
  • Asegura compatibilidad con tu entorno de ejecución.
  • Evita sorpresas al desplegar.

¿Cómo crear una imagen distroless con Python 3 y multi-stage?

El repositorio de Google Container Tools ofrece ejemplos listos. Con dos archivos y un Dockerfile breve, puedes construir y publicar una imagen final mínima basada en distroless.

¿Qué archivos necesitas del repositorio de Google Container Tools?

  • Ubica el repo distroless en Google Container Tools.
  • En la carpeta de ejemplos, entra a Python 3.
  • Copia dos archivos: dockerfile y hello.py.
  • Crea un folder local llamado "distroless".
  • Añade hello.py y dockerfile sin modificar el contenido.

¿Cómo funciona el Dockerfile multi-stage?

  • Primera etapa con Python 3 slim: aquí “ocurre la magia” de la app.
  • Publicación con distroless Python 3: imagen final mínima y optimizada.
  • Pocas líneas, enfoque claro y sin capas innecesarias.

¿Cómo construir y etiquetar la imagen con docker build?

  • Abre la terminal en la carpeta del dockerfile.
  • Ejecuta el build con etiqueta identificable.
docker build -t <tu-tag> .
  • Observa la velocidad del build.
  • Verifica el resultado en Docker Desktop.

¿Qué resultados obtienes y por qué convienen?

El cambio es notable: menor peso, builds más ágiles y despliegues más confiables. Todo gracias a escoger bien las imágenes base y aprovechar multi-stage para separar construcción y ejecución.

¿Qué tamaño logramos frente a imágenes tradicionales?

  • Antes: 840 MB para una aplicación similar.
  • Ahora: 52 MB con distroless.
  • Se refleja directamente en transferencia, arranque y costos.

¿Por qué escoger bien la imagen base es clave?

  • “La magia” está en la selección de la imagen correcta.
  • Distroless no es “sin Linux”: es Linux mínimo y optimizado.
  • Cumple los requisitos de la app con el menor peso posible.

¿Qué significa realmente distroless en Linux?

  • No administras una distro completa.
  • Usas solo lo necesario para ejecutar tu servicio.
  • Menos superficie de ataque y menos capas inútiles.

¿Ya probaste imágenes distroless en tus proyectos con Python 3 u otros runtimes? Cuéntame qué tamaños y mejoras has logrado y qué variantes de Debian te han funcionado mejor.