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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals, actualiza a CoddyKit PRO. El curso de Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?
No se requiere experiencia previa. Docker & DevOps Fundamentals 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 Docker & DevOps Fundamentals?
Sí. Cada lección de Docker & DevOps Fundamentals 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