paint-brush
¿Cómo perder peso en tu imagen de Docker?by@infinity
2,195
2,195

¿Cómo perder peso en tu imagen de Docker?

Rishabh Agarwal4m2024/01/19
Read on Terminal Reader
Read this story w/o Javascript

La contenedorización es un proceso de implementación de software que agrupa el código de una aplicación con todos los archivos y bibliotecas que necesita para ejecutarse en cualquier infraestructura. Al optimizar sus imágenes de Docker, puede acelerar el ciclo de desarrollo general, pero también refuerza las medidas de seguridad implementadas, lo que garantiza un entorno de software más sólido y eficiente.
featured image - ¿Cómo perder peso en tu imagen de Docker?
Rishabh Agarwal HackerNoon profile picture

Contenedorización ”, dijo inequívocamente mi gerente cuando le pregunté sobre lo que más revolucionó la industria del desarrollo de software. Sostuvo que sin la contenedorización, el rápido escalamiento y la implementación global del software actual habrían sido un desafío mucho más formidable. Es notable observar que casi todo el software que se utiliza hoy en día aprovecha la contenedorización en diversas capacidades, lo que subraya su papel indispensable en el impulso del ecosistema de software moderno.


Para aquellos de ustedes que no lo saben, aquí hay una definición del sitio web de AWS ~

 *“Containerisation is a software deployment process that bundles an application's code with all the files and libraries it needs to run on any infrastructure. Traditionally, to run any application on your computer, you had to install the version that matched your machine's operating system.”*


Las imágenes sirven como bloques de construcción para los contenedores, similares a los planos que guían su creación. Por lo tanto, mantener imágenes de contenedores livianas y optimizadas acelera el proceso de implementación y facilita la distribución de estas imágenes. Al optimizar sus imágenes de Docker, no solo puede acelerar el ciclo de desarrollo general, sino que también refuerza las medidas de seguridad implementadas, garantizando un entorno de software más sólido y eficiente.


En este artículo, exploraremos varios métodos para crear imágenes Docker eficientes y, en última instancia, mejoraremos la eficiencia de su aplicación.

Empaquetar una sola aplicación por contenedor

Es un error común tratar los contenedores como máquinas virtuales (VM) y empaquetar más de una aplicación dentro de un solo contenedor. Si bien aumenta el tamaño de su contenedor, esta práctica también tiene otras desventajas.


Se prevé que un contenedor tenga una vida útil estrechamente relacionada con la aplicación que ejecuta. El contenedor debe comenzar cuando se inicia la aplicación y finalizar cuando finaliza la aplicación. Las soluciones de orquestación de contenedores como Docker y Kubernetes dependen en gran medida de este atributo de los contenedores. Si un contenedor ejecuta muchas aplicaciones, las herramientas de orquestación no podrán identificar ni reiniciar su aplicación.

Utilizar cachés de forma inteligente

Las imágenes se componen de capas y cada instrucción en su Dockerfile agrega una nueva capa. Las tecnologías de contenedorización, como Docker, intentarán reutilizar capas de compilaciones anteriores siempre que sea posible para reducir el tiempo de construcción. El caché para una capa solo se puede utilizar si ninguna de las capas subyacentes ha cambiado desde compilaciones anteriores.


Para mejorar la velocidad de creación de imágenes, es beneficioso colocar instrucciones que pueden cambiar con frecuencia a continuación en su Dockerfile. Este enfoque permite a Docker aprovechar su sistema de almacenamiento en caché de manera más efectiva. Por ejemplo, dado que el código fuente suele sufrir cambios frecuentes, es recomendable copiarlo en la imagen hacia el final del proceso.


Caché de imágenes ~ https://cloud.google.com/architecture/best-practices-for-building-containers


Si bien no aclara las imágenes, ¡hace que el proceso de construcción sea rápido!

Eliminar herramientas innecesarias

Con frecuencia, las imágenes de contenedores incluyen herramientas innecesarias, lo que genera imágenes infladas y posibles vulnerabilidades de seguridad. Por ejemplo, los piratas informáticos pueden aprovechar herramientas como netcat para llevar a cabo actividades maliciosas dentro de su contenedor si obtienen acceso no autorizado.


Mantener estrictamente el conjunto de herramientas y bibliotecas que se envían con la imagen de su contenedor puede ayudar significativamente a reducir las amenazas a la seguridad y también daría como resultado imágenes más delgadas. Las imágenes más pequeñas se descargan más rápido, lo que significa que el contenedor se inicia más rápido.

Utilice la imagen base más pequeña

La imagen a la que hacemos referencia en la instrucción FROM se llama imagen base. La imagen base dicta en gran medida el tamaño de la imagen final creada. Deberíamos intentar utilizar la imagen base más pequeña posible para reducir el tamaño final de nuestra imagen.


Intente utilizar imágenes alpinas siempre que sea posible, ya que son de menor tamaño y a menudo contienen suficientes herramientas para respaldar la actividad de desarrollo.


Incluso cuando una imagen pequeña no contiene todas las herramientas que necesita, usarla puede ser una mejor opción. La instalación de los paquetes que necesita encima de la imagen base más clara aún puede permitir ahorrar en comparación con el uso de la imagen más pesada.

¡Copia sólo lo necesario!

Al copiar el código fuente, es posible que también se copien muchos de los archivos y carpetas no deseados. Esto aumenta el tamaño de la imagen y, en última instancia, provoca hinchazón. Intente minimizar la cantidad de archivos copiados y trate de mantenerlos al mínimo.


En nuestra industria a menudo se pasa por alto la importancia de optimizar las imágenes de los contenedores y establecer las mejores prácticas. Sin embargo, no se pueden subestimar los beneficios sustanciales que se derivan de seguir estas prácticas. Como desarrolladores, es esencial priorizar constantemente la creación de imágenes de contenedores delgadas y rápidas.


Con esto llegamos al final de este artículo. ¡Espero que hayas disfrutado leyéndolo!