Si es un desarrollador de Docker o ha estado tratando de ensuciarse las manos con Docker, debe haber notado la importancia de crear un archivo docker eficiente . Un Dockerfile le permite mencionar una secuencia de instrucciones que se ejecutan paso a paso y cada ejecución crea una capa de imagen intermedia encima de la imagen base. Después de ejecutar la última instrucción, obtiene su imagen final de Docker. Le ayuda a automatizar todo el proceso y ayuda a realizar un seguimiento de todos los cambios que realiza. Básicamente, es un modelo de su imagen.
El rendimiento del Docker Container puede variar según la secuencia de pasos que haya especificado en su dockerfile . Por lo tanto, es muy importante que cuides al máximo los pasos que incluyes dentro de tu dockerfile . En este artículo, analizaremos las mejores prácticas que puede adoptar para asegurarse de que su imagen final de Docker se construya y ejecute de manera eficiente con un bajo consumo de recursos.
1. Evite instalar paquetes innecesarios.
Si instala paquetes innecesarios en su dockerfile , aumentará el tiempo de compilación y el tamaño de la imagen. Además, cada vez que realice cambios en el dockerfile , tendrá que seguir todos los pasos para construir esa misma imagen grande una y otra vez. Esto crea un efecto descendente en cascada en el rendimiento. Para evitar esto, siempre se recomienda incluir solo aquellos paquetes que son de suma importancia y tratar de evitar instalar los mismos paquetes una y otra vez.
Puede usar un archivo de requisitos para instalar todos los paquetes que necesite. Use el siguiente comando para hacerlo.
RUN pip3 install -r requirements.txt
2. Encadene todos los comandos RUN
Cada comando EJECUTAR crea una unidad almacenable en caché y crea una nueva capa de imagen intermedia cada vez. Puede evitar esto enstringndo todos sus comandos EJECUTAR en un solo comando EJECUTAR. Además, intente evitar enstringr demasiados comandos RUN almacenables en caché porque conduciría a la creación de un caché grande y, en última instancia, provocaría una ráfaga de caché.
RUN apt-get -y install firefox RUN apt-get -y install vim RUN apt-get -y update
Los comandos anteriores se pueden enstringr en un solo comando RUN.
RUN apt-get -y install firefox \ && apt-get -y install vim \ && apt-get -y update
3. Use un archivo .dockerignore
Similar a . gitignore , puede especificar archivos y directorios dentro de . dockerignore archivo que le gustaría excluir de su contexto de compilación de Docker. Esto daría como resultado la eliminación de archivos innecesarios de su Docker Container, reduciría el tamaño de la imagen de Docker y aumentaría el rendimiento de la compilación.
4. Usa el mejor orden de declaraciones
Incluya las declaraciones que cambian con más frecuencia al final de su dockerfile . La razón detrás de esto es que cuando cambia una declaración en su dockerfile , su caché se invalida y todas las declaraciones posteriores también se rompen. Por ejemplo, incluya los comandos EJECUTAR en la parte superior y los comandos COPIAR en la parte inferior. Incluya los comandos CMD, ENTRYPOINT al final del dockerfile .
5. Evite instalar dependencias de paquetes innecesarias
Puede usar el indicador –no-install-recommends mientras crea la imagen. Le dirá al administrador de paquetes apt que no instale dependencias redundantes. La instalación de paquetes innecesarios solo aumenta el tiempo de compilación y el tamaño de la imagen, lo que provocaría una degradación del rendimiento.
Para concluir, cómo no elegir el orden correcto al escribir su dockerfile puede aumentar el tiempo de compilación, el tamaño de la imagen y disminuir el rendimiento de todo el proceso. También discutimos algunos de los principales consejos que puede seguir para mejorar el rendimiento general de la compilación y reducir la cantidad de cachés que compilan una capa de imagen intermedia.