Ingeniero DevOps: pregunta de entrevista
¿Cómo reduces el tamaño de una imagen Docker?
Usa base mínima confiable, builds multietapa, .dockerignore estricto, capas deterministas, dependencias solo de producción y sin cachés ni herramientas de build en la imagen final; inspecciona y escanea.
Respuesta directa
Qué debe cubrir una buena respuesta
Cómo funciona
El tamaño de la imagen lo decide lo que acaba en las capas finales. Una build multi-stage compila o instala en una etapa y copia solo los artefactos de runtime a una base mínima como distroless o alpine, dejando atrás compiladores, cachés de paquetes y dependencias de pruebas. Un .dockerignore mantiene el contexto y la imagen libres de historial de código, configuraciones locales y node_modules del host. Las capas de dependencias se ordenan para cachearse entre builds, las instalaciones solo de producción omiten paquetes de desarrollo y las cachés del gestor de paquetes se eliminan en el mismo RUN que las creó. Herramientas como dive muestran qué capa pesa, y un escáner confirma que la superficie más pequeña tiene menos vulnerabilidades.
Ejemplo
La imagen de un servicio Node pasó de 1,4 GB a 180 MB: la etapa de build ejecutó npm ci y el compilador de TypeScript, la etapa final partió de node:20-slim, copió dist y un node_modules solo de producción y corrió como usuario no root. Un .dockerignore que excluía .git y ficheros de entorno locales también eliminó un fichero de credenciales filtrado que se había horneado en todas las imágenes anteriores.
Errores frecuentes
- Instalar herramientas de build en la etapa final y enviar un compilador a producción.
- Borrar ficheros de caché en una capa posterior, lo que no los elimina de la anterior.
- Usar latest como etiqueta base, de modo que la imagen cambia sin cambiar el código.
Una estructura útil para responder
Responde desde tu propia experiencia.
No memorices un guion: usa solo ejemplos que puedas explicar con honestidad en preguntas posteriores.
Abre el espacio de trabajo de escritorio y ensaya una respuesta clara con tus propias palabras.