¿Qué es Docker multi-stage build?

| Última modificación: 12 de marzo de 2024 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Docker multi-stage build es una opción de la plataforma de contendores utilizada con el objetivo de hacer más fácil los procesos relacionados con la optimización de los dockerfiles, así como su lectura y mantenimiento. Esta herramienta permite, además, la construcción de imágenes intermedias que contribuyen a aligerar la imagen final en el sistema.

De manera que la compilación o construcción en varias etapas, también conocido como Docker multi-stage build, está disponible a partir de la versión 17.05 de Docker y permite que el cliente utilice varias imágenes para crear una imagen o producto final. Este elemento cuenta con un solo archivo de dockerfile multi-stage, sin embargo, eso no le impide realizar las labores de definición de múltiples imágenes dentro de sí.

Antecedentes de Docker multi-stage build

Antes de la introducción de la herramienta de soporte y creación Dockerfile multi-stage build, el sistema utilizaba otros elementos más complejos y poco prácticos para reducir el tamaño de las imágenes de Docker. Esto se debe a cada una de las instrucciones incluidas en el dockerfile stage build (los archivos de texto encargados de la unión de los elementos requeridos para la construcción de una imagen en un contenedor de Docker) agrega una nueva capa a la imagen; además, debe cumplir la labor de limpiar todos los artículos que no esté utilizando antes de dar el paso a la siguiente capa.

De manera que, antes del Docker multi-stage build, para escribir uno de estos dockerfile de manera efectiva, el usuario tenía que usar múltiples instrumentos que le permitieran disminuir el tamaño de las capas lo máximo posible, garantizando también que estas contuvieran solo los datos e información estrictamente necesaria.

Otra de las opciones para manejar un tamaño de imagen bajo antes de la herramienta Docker multi-stage build solía ser tener un dockerfile especificado para el desarrollo de la imagen. Este, además, incluía los elementos requeridos para su creación, al tiempo que tenían un dockerfile stage build reducido que se usaba en la producción y que contenía la aplicación y lo que necesitaba para que esta se ejecutara. Sin embargo, gestionar dos dockerfiles no es la manera más práctica ni sencilla para trabajar en la plataforma.

Además de esto, antes de la implementación de Docker multi-stage build, la plataforma usaba el llamado builder pattern, que era un tipo de patrón de generación. Funcionaba utilizando dos imágenes de Docker para crear una imagen base que se encargaba de crear los activos y una segunda que gestionaba la ejecución de esa primera imagen.

🔴 ¿Quieres entrar de lleno al mundo DevOps & Cloud Computing? 🔴

Descubre el DevOps & Cloud Computing Full Stack Bootcamp de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp en DevOps & Cloud Computing por una semana

Características de Docker multi-stage build

Dentro de las características principales de la herramienta Docker multi-stage se encuentra la instrucción from, que se usa en los dockerfiles. Este elemento permite utilizar una base para la imagen en la plataforma, que se encargan de comenzar etapas nuevas en la construcción de la imagen. From también contribuye a copiar selectivamente los objetos necesarios para pasar de una etapa a la siguiente, eliminando todo lo que no sea fundamental para el desarrollo de la imagen final.

Además de esto, Docker multi-stage build permite la opción de detenerse en una etapa determinada de la construcción de una imagen. Esto implica que el usuario no necesita desarrollar todo el dockerfile, sino que puede especificar una etapa de construcción de destino. Esta instrucción es de gran relevancia para labores como la depuración de una etapa de creación de imagen en el sistema.

Otra de las características de la herramienta Docker multi-stage build es que, dependiendo de su diseño, puede presentar algunas limitaciones relacionadas con la velocidad de la construcción o compilación de la imagen. Esto se debe a la cantidad de capas necesarias para la creación de una imagen de calidad en los dockerfiles, lo que hará que el caché de esta herramienta no tenga las imágenes creadas en las capas anteriores y que son la base para la imagen final.

¿Cuál es el siguiente paso?

En este artículo has podido conocer qué es la herramienta Docker multi-stage build, además de cuáles son sus antecedentes, características y limitaciones; ahora que ya has llegado hasta aquí, no dudes en ir un paso más allá y seguir aprendiendo acerca de este y otros elementos de Docker, como sus imágenes, a través de nuestro DevOps & Cloud Computing Full Stack Bootcamp. Con este bootcamp solo necesitarás 6 meses para conocer todo lo imprescindible para ser un experto y destacar dentro del sector IT. ¡Anímate a inscribirte en este bootcamp para seguir aprendiendo sobre Docker y mucho más!

Xoán Mallón

Senior DevOps Engineer en Zscaler & Coordinador del Bootcamp DevOps & Cloud Computing.

Posts más leídos

¡CONVOCATORIA ABIERTA!

DevOps & Cloud Computing

Full Stack Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado