Tabla de contenido
El orden importa
En los Dockerfiles el orden importa y mucho. Por ejemplo, no es lo mismo ejecutar una instrucción COPY o ADD para añadir un fichero ejecutable y luego ejecutarlo que tratar de ejecutarlo antes de añadirlo. Esto parece de cajón pero es de los principales errores que hacen que no funcione correctamente un Dockerfile a la hora de tratar de crear una imagen a partir de él.
Aligera la imagen borrando ficheros
Siempre que crees una imagen ten en cuenta el borrado de ficheros temporales que no necesitaremos al correr la aplicación ya que así ahorraremos espacio en disco. Por ejemplo, si para hacer funcionar la aplicación descargamos un fichero comprimido, descomprimimos su contenido y este contenido es el que utilizaremos, deberíamos borrar el fichero comprimido para hacer que la imagen sea más ligera.
Reduce el número de ficheros
Evita instalar paquetes no necesarios. Si no haces esto puedes tener un mayor consumo de memoria y disco con la imagen que estás creando además puedes generar mayores problemas de seguridad ya que tendrás que mantener y actualizar estos ficheros en cada versión.
Evita incluir fichero que no debes usando «.dockerignore»
Evita incluir ficheros que no deben ser incluidos como por ejemplo ficheros que contengan datos personales haciendo uso de los ficheros «.dockerignore» estos ficheros son similares a los «.gitignore» y con pocas líneas podemos evitar filtrar información.
Especifica la versión de la imagen base y las dependencias
Es importante utilizar versiones concretas y no utilizar imágenes base y dependencias sin especificar versión. El no especificar versiones puede conducirnos a fallos no contemplados y difíciles de localizar.
Utiliza la imagen base correcta
Es importante utilizar imágenes base lo mas pequeñas posibles como Alpine o Busybox siempre que sea posible. Por otro lado es posible que con algunas aplicaciones necesitemos imágenes específicas para hacer funcionar la aplicación, en este caso no hay mucho mas que comentar, úsala.
Por último siempre que sea posible utiliza imágenes base oficiales, haciendo esto evitarás problemas como utilizar imágenes con malware integrado.
Reutiliza imágenes
Si todas las imágenes que corren sobre tus hosts están basadas en Ubuntu:20.04 por ejemplo, utilizar esta imagen base puede ahorrarnos más espacio en disco que utilizar una imagen pequeña como Alpine o Busybox ya que ya tenemos guardada en disco la otra imagen.