/ HOWTO

Optimizando las imágenes de Docker.


Optimizar el espacio y reducir el tamaño de los contenedores es fundamental para poder crear entornos de contenedores eficientes. Compartimos una serie de tips para que puedas reducir el espacio de las imágenes Docker.

Las imágenes docker son generadas a partir de una serie de layers. Cada layer representa una instrucción en el archivo Dockerfile. Todas las Layers, excepto la última, son read-only.

Ej: el siguiente Dockerfile tiene 4 layers.

FROM ubuntu:15.04
COPY . /app
RUN make /app
CMD python /app/app.py

Una forma gráfica de representarlo es la siguiente:

layersdedocker

Reduciendo las imagenes Docker

    • Las imágenes grandes tardan más tiempo en bajarse*. Por ejemplo, la última imagen de Node puede tardar unos 90 segundos, mientras la imagen version Alpine de Node solo 12 segundos.
    • Las imágenes grandes también ocupan más espacio en disco*. La última imagen de Node ocupa unos 667 MB mientras la versión Alpine de Node solo ocupa 64,7 MB.

Si pensamos que Docker está diseñado para poder montar gran cantidad de contenedores, tanto el espacio como la velocidad son factores claves en un ambiente de desarrollo y mucho mas de producción.

¿Cómo optimizar las imágenes?

Utilizar la menor cantidad de layers posibles.

El siguiente conjunto de instrucciones ocupa 4 layers

# RUN apt-get update -y
# RUN apt-get install -y curl
# RUN apt-get install -y postgresql
# RUN apt-get install -y postgresql-client

El mismo comando, ocupa un solo layer:

RUN apt-get update -y && \
apt-get install -y curl postgresql postgresql-client

Reducir espacio eliminando archivos temporales o cosas que no son necesarias en el contenedor.

RUN apt-get update -y && \
apt-get install -y curl postgresql postgresql-client && \
rm -rf /var/lib/apt/lists/*

Optimizar el archivo “.dockerignore”, indicando que ficheros temporales y logs, deben ignorarse.

echo “tmp” >> .dockerignore
echo “logs” >> .dockerignore

Subscríbete y recibirás los últimos artículos semanalmente en tu email.