Mejores Prácticas para Imágenes de Docker Más Pequeñas
Usa una Imagen Base Recortada
Como se mencionó anteriormente, usar una imagen base más pequeña, como alpine o scratch, puede reducir significativamente el tamaño de tu imagen de Docker. Estas imágenes base recortadas solo incluyen los paquetes y dependencias esenciales, minimizando la huella general.
## Usando una imagen base recortada
FROM alpine:latest
Evita Instalar Paquetes Innecesarios
Al instalar paquetes en tu Dockerfile, solo instala los necesarios para que tu aplicación funcione. Evita instalar herramientas o utilidades adicionales que no necesites, ya que aumentarán el tamaño de tu imagen.
## Mala práctica: instalación de paquetes innecesarios
RUN apt-get update \
&& apt-get install -y curl wget vim
## Buena práctica: solo instala paquetes necesarios
RUN apt-get update \
&& apt-get install -y curl
Aprovecha las Construcciones Multietapa
Como se discutió en la sección anterior, las construcciones multietapa pueden ayudarte a crear imágenes finales más pequeñas separando los entornos de compilación y ejecución.
## Dockerfile usando construcción multietapa
FROM golang:1.16 AS builder
COPY . /app
RUN go build -o /app/myapp
FROM alpine:latest
COPY --from=builder /app/myapp /app/myapp
CMD ["/app/myapp"]
Usa .dockerignore para Excluir Archivos Innecesarios
El archivo .dockerignore te permite especificar archivos y directorios que deben excluirse del contexto de compilación de Docker. Esto puede ayudar a reducir el tamaño del contexto de compilación y, en consecuencia, el tamaño de la imagen final.
## .dockerignore
.git
*.md
Dockerfile
Optimiza las Capas de la Imagen
Optimiza tu Dockerfile combinando múltiples comandos RUN, usando el operador &&, y evitando capas innecesarias. Esto puede ayudar a reducir el número de capas en tu imagen, lo que lleva a un tamaño general más pequeño.
## Mala práctica: múltiples comandos RUN
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get install -y wget
## Buena práctica: combinar comandos RUN
RUN apt-get update \
&& apt-get install -y curl wget
Limpia Regularmente los Recursos No Usados
Como se mencionó anteriormente, limpiar regularmente los recursos de Docker no utilizados, como imágenes, contenedores, redes y volúmenes, puede ayudar a mantener tu entorno de Docker ágil y eficiente.
## Limpiar recursos de Docker no utilizados
docker system prune -a
Siguiendo estas mejores prácticas, puedes optimizar eficazmente el tamaño de tus imágenes de Docker, haciéndolas más eficientes para construir, distribuir e implementar.