Secciones

¿Qué es Buildah?

Copiar URL

Es una herramienta open source basada en Linux que se utiliza para diseñar contenedores compatibles con la Open Container Initiative (OCI), por lo cual también se pueden utilizar con Docker y Kubernetes. Con Buildah, puede usar sus herramientas favoritas para crear imágenes de contenedores eficientes a partir de una imagen base existente o desde cero con una imagen vacía. Es una forma más flexible y segura de crear imágenes de contenedores. En este artículo, aprenderemos más sobre cómo hacerlo.

En 2017, Daniel Walsh y un equipo de Red Hat con el que trabajaba crearon Buildah, cuyo nombre surge de la palabra "builder", pronunciada con el acento de Boston. Se propusieron crear un paquete de herramientas principales (coreutils) para las imágenes de contenedores, es decir, una herramienta que podría utilizarse con las del host de contenedores actuales para diseñar imágenes compatibles con OCI y Docker. Como resultado, las imágenes podrían almacenarse en los registros de contenedores y utilizarse en varios entornos de tiempo de ejecución, ya sea sin un daemon o con él, como en el caso de Docker, que requiere privilegios de superusuario y crea contenedores que dependen de sus funciones. 

Finalmente crearon Buildah, una herramienta de línea de comandos que:

  • Diseña imágenes de contenedores utilizando o no Dockerfiles, los cuales son documentos de texto que contienen todos los comandos a los que un usuario podría recurrir para montar una imagen.
  • Crea imágenes de contenedores desde cero o a partir de una imagen actual de contenedor.
  • No incluye herramientas de diseño dentro de la misma imagen, lo cual reduce el tamaño de las que crea, mejora su seguridad y permite transportarlas con mayor facilidad gracias a que se utilizan menos recursos.
  • Es compatible con los Dockerfiles, lo cual simplifica la transición desde Docker.
  • Crea imágenes específicas para cada usuario, de manera que se puedan filtrar según quién las diseñó.

Buildah no solo le brinda flexibilidad para diseñar imágenes sin los Dockerfiles (lo que posibilita integrar otros lenguajes de creación de scripts al proceso), sino también eficiencia, gracias a que utiliza herramientas de diseño externas a la imagen. Por eso, permite generar innovaciones e implementar ideas nuevas con mayor rapidez. Las imágenes de contenedores se pueden crear y mejorar rápidamente, tan solo con las herramientas y los procesos que sean necesarios para ponerlas en marcha.

Buildah también le permite:

  • Analizar, verificar y modificar las imágenes
  • Trasladar los contenedores y las imágenes desde el almacenamiento local hasta un registro o repositorio público o privado
  • Cargar o extraer las imágenes de Docker Hub
  • Eliminar las imágenes de contenedores almacenadas en las instalaciones
  • Montar y desmontar el sistema de archivos de superusuario de un contenedor en funcionamiento
  • Utilizar el contenido actualizado del sistema de archivos de superusuario de un contenedor como la capa del sistema de archivos para una imagen nueva

Buildah y Podman son proyectos open source y herramientas de la línea de comandos complementarios, que funcionan con las imágenes y los contenedores de la OCI y permiten diseñarlos. Buildah se creó primero, y Podman utiliza el mismo código para el proceso de diseño. Sin embargo, los comandos de Buildah son mucho más detallados, lo cual permite controlar las imágenes de forma más precisa y crear sus capas con mayor definición. El comando build de Podman utiliza un subconjunto de las funciones de Buildah. 

Buildah y Podman se enfocan en diferentes aspectos. La primera se centra en el diseño de imágenes de contenedores y replica todos los comandos que se encuentran en el Dockerfile sin el socket del daemon. La segunda se especializa en los elementos que se necesitan para mantener y modificar esas imágenes en un contenedor. Podman le permite crear un contenedor a partir de una imagen que proporciona Buildah y, luego, ejecutarlo, mantenerlo y modificarlo en un entorno de producción utilizando los comandos de la interfaz de la línea de comandos (CLI) que ya conoce: si puede ejecutar un comando en la CLI de Docker, también puede hacerlo en la de Podman. 

Otra diferencia entre Buildah y Podman es que crean los contenedores con diferentes propósitos. La primera los diseña de manera temporal, lo cual permite la transferencia de contenido a la imagen del contenedor que se está creando. En cambio, la segunda genera contenedores tradicionales, para que se utilicen y mantengan por períodos de tiempo más extensos. Es decir, difieren en la cantidad de tiempo que se utilizan. 

Por último, Buildah y Podman no comparten representaciones internas de contenedores, por lo que un contenedor en uno no se puede ver en el otro. Sin embargo, sí comparten representaciones internas de imágenes de contenedores, lo que permite que las imágenes de contenedores que se crean, modifican o extraen de una se vean y usen en la otra.  

Buildah comenzó en Red Hat, donde ingenieros y desarrolladores de la empresa trabajaron en conjunto para desarrollar una herramienta útil y valiosa que permitiera ahorrar tiempo y mejorar la productividad. Cualquier persona que trabaje con los contenedores de Linux comprenderá la utilidad de esta herramienta, y cuando se trata de ellos y de Kubernetes, Red Hat se encarga de todo, desde el sistema operativo hasta la automatización

Red Hat es especialista en contenedores y en Kubernetes. Tenemos los productos y los servicios necesarios para garantizar que pueda diseñar y ejecutar su estrategia de la forma más adecuada.Si necesita que sus equipos de desarrollo trabajen en una plataforma diseñada para los contenedores, desea ejecutar su infraestructura de contenedores en un sistema operativo de primera categoría o quiere ofrecer soluciones de almacenamiento para la gran cantidad de datos que generan los contenedores, entonces, las soluciones de Red Hat son ideales para usted.

Artículos relacionados

ARTÍCULO

Diferencias entre los contenedores y las máquinas virtuales

Las máquinas virtuales (VM) y los contenedores de Linux son entornos informáticos empaquetados que combinan varios elementos de TI y los aíslan del resto del sistema.

ARTÍCULO

¿Qué es la organización de los contenedores?

La organización en contenedores automatiza la implementación, la gestión, la escalabilidad y la conexión en red de los contenedores.

ARTÍCULO

¿Qué es un contenedor de Linux?

Un contenedor de Linux es un conjunto de procesos separados del resto del sistema, los cuales pueden ejecutarse desde una imagen diferente que proporciona todos los archivos necesarios para que funcionen.

Más información sobre los contenedores

Productos

Plataforma de aplicaciones empresariales que ofrece servicios probados para lanzar aplicaciones al mercado en la infraestructura que usted escoja.

Contenido adicional

Ebook

Los seis aspectos más importantes a tener en cuenta a la hora de seleccionar una plataforma de Kubernetes

PODCAST

Command Line Heroes Temporada 1, Episodio 5:

El Derby de los Containers

Capacitación

Curso de capacitación gratuito

Running Containers with Red Hat Technical Overview

Curso de capacitación gratuito

Containers, Kubernetes and Red Hat OpenShift Technical Overview

Curso de capacitación gratuito

Developing Cloud-Native Applications with Microservices Architectures