Minimización del tamaño de imágenes con bases Slim y Distroless
Reduzca el tamaño de las imágenes finales eligiendo bases mínimas, eliminando herramientas de compilación y usando bases distroless o scratch para obtener descargas más rápidas y una superficie de ataque menor.
Minimización del tamaño de imágenes con bases Slim y Distroless es una lección gratuita de DevOps Bootcamp en CoddyKit. Esta es la lección 4 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de DevOps Bootcamp, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de DevOps Bootcamp incluye 4 lecciones en total.
Por qué importa el tamaño de la imagen
Las imágenes más pequeñas se descargan más rápido, se inician antes, cuestan menos de almacenar y exponen menos paquetes a los atacantes. Optimizar el tamaño mejora tanto el rendimiento como la seguridad.
Elegir una imagen base ligera
Las imágenes predeterminadas son prácticas, pero pesadas. Cambiar node:20 (~1GB) por node:20-slim o node:20-alpine puede reducir cientos de megabytes al instante.
FROM node:20-slimCompromisos de Alpine
Alpine ocupa muy poco, pero utiliza musl libc en lugar de glibc, lo que en ocasiones provoca errores en binarios nativos. Haga pruebas exhaustivas; a veces -slim es la opción pequeña más segura.
FROM python:3.12-alpineCombinar capas RUN
Cada RUN añade una capa. Encadene los comandos relacionados y realice la limpieza en la misma capa; de lo contrario, los archivos eliminados seguirán aumentando el tamaño de la capa anterior.
RUN apt-get update \
&& apt-get install -y curl \
&& rm -rf /var/lib/apt/lists/*Usar .dockerignore
Un archivo .dockerignore mantiene fuera del contexto de compilación los archivos innecesarios: node_modules, .git y registros. Un contexto menor implica compilaciones más rápidas y capas más pequeñas.
# .dockerignore
.git
node_modules
*.logResumen de las compilaciones multietapa
Compile en una etapa con todos los compiladores y después use COPY --from para copiar únicamente el artefacto a una etapa final limpia. Las herramientas de compilación no se incluyen en la imagen final.
FROM golang:1.22 AS build
WORKDIR /src
COPY . .
RUN go build -o app
FROM alpine:3.20
COPY --from=build /src/app /appConozca Distroless
Las imágenes Distroless contienen únicamente su aplicación y su runtime: no incluyen shell, gestor de paquetes ni binarios adicionales. Son pequeñas y difíciles de explotar.
FROM gcr.io/distroless/static-debian12
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Sin shell, no hay problema
Distroless no incluye shell, por lo que los comandos RUN y docker exec sh no funcionarán. Realice toda la configuración en las etapas anteriores; use la etiqueta :debug cuando necesite inspeccionar el interior.
La imagen base scratch
Para binarios completamente estáticos (Go, Rust), FROM scratch no incluye nada salvo el ejecutable; el tamaño total suele ser de unos pocos megabytes.
FROM scratch
COPY --from=build /src/app /app
ENTRYPOINT ["/app"]Medir los resultados
Use docker images para comparar tamaños y docker history para ver qué capas son más grandes. Optimice primero las capas de mayor tamaño.
docker history myapp:latestFijar versiones, no latest
Fijar una etiqueta o un digest específicos hace que las compilaciones sean reproducibles y evita aumentos inesperados de tamaño cuando cambia el latest del registro de origen.
FROM node:20.11.1-slimComprobación rápida
¿Qué tiene de especial una imagen distroless?
Resumen
Ahora puede reducir considerablemente el tamaño de las imágenes:
- Elija imágenes base
-slim,-alpine, distroless oscratch - Encadene y limpie las capas
RUN; use.dockerignore - Las compilaciones multietapa eliminan las herramientas de compilación
- Mida con
docker historyy fije las versiones
Las imágenes más pequeñas permiten implementaciones más rápidas y seguras.
Preguntas frecuentes
¿La lección «Minimización del tamaño de imágenes con bases Slim y Distroless» es gratis?
Sí — el texto completo de «Minimización del tamaño de imágenes con bases Slim y Distroless» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de DevOps Bootcamp, actualiza a CoddyKit PRO. El curso de DevOps Bootcamp incluye 4 lecciones en total.
¿Qué aprenderé en «Minimización del tamaño de imágenes con bases Slim y Distroless»?
Reduzca el tamaño de las imágenes finales eligiendo bases mínimas, eliminando herramientas de compilación y usando bases distroless o scratch para obtener descargas más rápidas y una superficie de at… Practicas DevOps Bootcamp con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar DevOps Bootcamp?
No se requiere experiencia previa. DevOps Bootcamp en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 4 de 4.
¿Cuánto tiempo toma la lección «Minimización del tamaño de imágenes con bases Slim y Distroless»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de DevOps Bootcamp?
Sí. Cada lección de DevOps Bootcamp incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Compilaciones multietapa para mejorar la eficiencia
- Aprovechamiento de la caché de compilación
- Buenas prácticas de seguridad para Dockerfiles
- Minimización del tamaño de imágenes con bases Slim y Distroless