Docker.pdf


Vista previa del archivo PDF docker.pdf


Página 1...87 88 8990 91

Vista previa de texto


5. Finalmente, y de los más importantes, minimizar el número de capas de
nuestras imágenes usando la caché de imagen. Docker usa union
filesystems para almacenar las imágenes. Esto quiere decir que cada
imagen se hace a partir de una imagen base más una colección
de diffs que agregan los cambios requeridos. Cada diff representa una
capa adicional en una imagen. Esto tiene un impacto directo en como
nosotros escribimos nuestro Dockerfile y las directivas que usamos. En la
sección siguiente veremos este punto.
Con estos puntos, haremos unos pequeños cambios en la imagen creada en la
sección anterior:
Tenemos el Dockerfle de esta forma:
FROM ubuntu:14.04
# Actualizamos repositorios e instalamos dependencias.
RUN apt-get update
RUN apt-get install -y python python-pip
RUN apt clean all
RUN pip install flask
# Agregamos nuestra aplicación al Filesystem del contenedor.
ADD hello.py /tmp/hello.py
# Exponemos el puerto del contenedor
EXPOSE 5000
# Comando por default que se ejecuta cuando se corre el contenedor
CMD ["python","/tmp/hello.py"]

Aplicamos unos cambios:
FROM ubuntu:14.04
RUN apt-get update && apt-get install -y \
python
python-pip
RUN pip install flask
COPY hello.py /tmp/hello.py
EXPOSE 5000
CMD ["python","/tmp/hello.py"]
Usar múltiples comandos RUN es una mala práctica, ya que genera una nueva

capa por cada uno. También cambiamos el comando ADD por COPY ya que ADD es
para operaciones de copiado más complejas, y nosotros sólo copiamos de
manera simple.
Aun así podríamos aplicar más optimizaciones como la siguiente:
FROM python:2.7.10