Docker.pdf


Vista previa del archivo PDF docker.pdf


Página 1...86 87 8889 90 91

Vista previa de texto


Optimizando el Dockerfile siguiendo buenas prácticas
Problema
Se quiere seguir las buenas prácticas para crear Dockerfiles y optimizar las
imágenes Docker.
Solución
Docker expone en su documentación una sección de buenas prácticas para
ecribir Dockerfiles. Estas prácticas nos ayudarán a crear imágenes de forma más
eficiente, modulares y con menor esfuerzo.
Estas son algunas instrucciones para crear buenas Docker Images.
1. Ejecutar un único proceso por contenedor. De todas formas podríamos
correr multiples procesos por contenedor, como se vió cuando
usamos supervisor. En este caso, supervisor es el único proceso de cara
al contenedor, pero éste levanta internamente otros procesos. Seguir la
práctica de un único proceso por contenedor, nos permite hacer
aplicaciones desacopladas que podrían escalar. Esto nos permite además
usar container links u otras técnicas de container networkingque veremos
más adelante.
2. No asumir que nuestros contenedores estarán siempre corriendo; Estos
son efímeros y serán parados y reiniciados. Se debería tratarlos como
entidades inmutables, lo que significa que no deberíamos modificarlos
mientras están en ejecución, sino modificar el Dockerfile reconstruir la
imagen y levantar un contenedor con esa imagen actualizada. Por lo
tanto, se recomienda manejar datos y configuraciones de ejecución fuera
del contenedor y por lo tanto de su imagen. Para esto, usamos Docker
Volumes.
3. Usar un archivo .dockerignore. Cuando creamos imágenes, Docker
copiará el contenido del working directory donde se encuentra el
Dockerfile, dentro de la imagen. Con los
archivos .dockerignore obtenemos un funcionamiento como
el .gitignore y básicamente lo que logramos es excluir archivos (basura o
sensibles) que no queremos que estén dentro de la imagen. El uso
del .dockerignore es opcional, pero si no lo usamos, aseguremonos de
copiar lo mínimo y necesario. Podemos chequear la sintaxis del mismo en
este link.
4. Usar imágenes oficiales del Docker Hub, en lugar de escribir las nuestras
desde cero. Estas imágenes están mantenidas por quienes son las
empresas autoras de ese software. También podemos usar ONBUILD
images, para simplicar el proceso de creación de nuestras imágenes.