Primeros pasos con Buildah para administrar contenedores de Linux

“Docker, Docker, Docker” que es lo que usábamos hasta hace poco.

Estibador sigue siendo muy popular, sin duda. Pero como sabemos en la industria de TI, la evolución ocurre rápidamente. Así que ahora escucharemos Buildah, PodmanCRI-O, Skopeo.

Si quiere relacionarse con una analogía, tenemos varios tipos de bayas, como bayas negras, arándanos, frambuesas, pero algún día alguien decide elegir los arándanos. Así que entre Buildah, Podman, CRI-O decidí elegir buildah. ¿Por qué? Porque es tan interesante como otras plataformas de contenedores.

¡Vamos a sumergirnos en Buildah!

¿Qué es Buildah?

Construir es una herramienta de línea de comandos para construir Iniciativa de contenedores abiertos (OCI) imágenes. Se puede utilizar con Docker, Podman, Gobernadores – ¡Cualquiera que sea su herramienta contenedora favorita!

Buildah se usa para crear, construir, administrar y ejecutar imágenes de contenedores y contenedores.

Con Buildah, crea un contenedor de trabajo a partir de una imagen o desde cero. También puede crear una imagen a partir de un contenedor de trabajo o usando Dockerfile. Puede crear las imágenes en formato OCI o en el formato Docker ascendente. Puede modificar y eliminar contenedores e imágenes.

Lo más interesante de Buildah es que no necesita un demonio para funcionar. Así que di no a los #bigfatdaemons. No tener un demonio da chispa específicamente cuando se trata de integración continua y entrega continua para construir contenedores.

Ningún demonio también significa que puede eliminar el demonio de Docker por Buildah para crear imágenes de contenedores. Pero eso no significa que Buildah no pueda incorporarse con Docker. Porque usando Dockerfile puedes construir, administrar y ejecutar tu imagen de contenedor por Buildah. ¿Impresionante verdad?

Instalación de Buildah en Linux

Veamos cómo ensuciarse las manos con Buildah. Los paquetes para Buildah están disponibles para Fedora y CentOS. Puede instalarlos fácilmente utilizando el administrador de paquetes de su distribución de Linux. Voy a enumerar algunos de los más comunes aquí:

Para instalar Buildah en Fedorautilizar

dnf install buildah -y

Para instalar Buildah en CentOS o RedHat:

yum install buildah -y

Para instalar Buildah en Ubuntu y Debian, puede usar el APP oficial proporcionado por proyecto atómico.

sudo apt update
sudo apt install -y software-properties-common
sudo add-apt-repository -y ppa:projectatomic/ppa
sudo apt install buildah

Una vez que Buildah está instalado, es hora de jugar con él.

Comandos básicos para usar Buildah

Aquí hay algunos comandos básicos para comenzar con buildah.

Para conocer la versión de Buildah.

buildah --version

La tarea inicial es extraer la imagen del contenedor de repositorios públicos o privados. Para extraer la imagen, buildah usa la variable ‘desde’. La variable ‘desde’ es la misma que se usa en Dockerfile. La diferencia es que en Docker especificamos la variable ‘desde’ en Dockerfile, mientras que en Buildah pasamos la variable a través de la línea de comandos.

buildah from ubuntu

En el comando anterior, Ubuntu es mi imagen de contenedor. Después de extraer con éxito la imagen basada en Ubuntu al final de la salida, verá: “ubuntu-working-container”.

Una vez que sepa que ha extraído la imagen con éxito, ahora puede querer ver la lista de imágenes que extrajo. Pero antes de eso, es posible que se pregunte “¿dónde se almacenan estas imágenes?”. La imagen extraída se almacena en el propio host.

buildah images 
 IMAGE NAME                                               IMAGE TAG            IMAGE ID             CREATED AT             SIZE
 docker.io/library/ubuntu                                 latest               94e814e2efa8         Mar 12, 2019 00:20     91.4 MB
 docker.io/library/fedora                                 latest               d09302f77cfc         Mar 12, 2019 00:20     283 MB

Si ya está familiarizado con los comandos de Docker, es posible que haya notado las similitudes entre los comandos de Docker y Buildah. Para exampleen Docker para ver la lista de imágenes extraídas, usamos el comando ‘docker images’.

Aquí está el comando para ver la lista de contenedores en ejecución. En Buildah, tan pronto como la extracción de la imagen del contenedor se realiza por completo, ese contenedor comienza a ejecutarse. Si se compara con Docker, después de extraer la imagen, necesitamos ejecutar la imagen usando ‘docker run’ y luego solo el contenedor comienza a ejecutarse.

CONTAINER ID  BUILDER  IMAGE ID     IMAGE NAME                       CONTAINER NAME
 1063320d2dc0     *     94e814e2efa8 docker.io/library/ubuntu:latest  ubuntu-working-container
 978a399e0aa7     *     d09302f77cfc docker.io/library/fedora:latest  fedora-working-container

Si desea limpiar y eliminar todos los contenedores en ejecución, ejecute el siguiente comando con precaución. Porque una vez que ejecute el comando, sus contenedores serán eliminados. El privilegio que tenemos en buildah sobre Docker es que Docker no nos permite eliminar el contenedor en ejecución, pero Buildah sí. Mientras usamos Docker, primero tenemos que detener el contenedor y luego solo podemos eliminar la imagen.

buildah rm --all

Si está atascado con algún comando, existe la opción de ayuda.

buildah --help

Veamos algunos casos de uso de Buildah, para comenzar con la implementación práctica, comenzaremos con simple. Y una vez que encuentre el ritmo con el Buildah, puede verter su creatividad y hacer cosas interesantes.

Construyendo un Apache imagen del contenedor del servidor web [Hands On]

Probemos lo que acabas de aprender con un proyecto de muestra de Buildah.

¿Qué crees que se necesitará para tener un Apache servidor web que se ejecuta dentro de un contenedor?

Por supuesto, una imagen, un contenedor en ejecución y ¿qué más? Bueno, lo principal que necesitaremos es: necesitamos instalar un httpd paquete dentro de un contenedor. ¡Oh! ¿como hacemos eso? Sin preocupaciones. Te diré eso.

Primero extraigamos una imagen de distribución de Linux. Elige la que sea tu favorita. yo he tirado CentOS imagen base

buildah from centos

Ahora instale httpd dentro del contenedor CentOS. Puedes hacerlo usando este comando:

buildah run centos-working-container yum install httpd -y

Verás una salida como esta.

Lo que hicimos fue instalar el paquete httpd sin siquiera entrar en el contenedor. Es como configurar las piezas de su bicicleta sin siquiera entrar en el garaje. Puede ver en la salida del comando anterior, el paquete se ha instalado frente a nosotros. Buildah no hace trampa ?

Ahora, creemos un archivo index.html personalizado.

echo "Linux Handbook is interesting !" > index.html

Copie su archivo personalizado index.html a la ruta del directorio /var/www/html

buildah copy centos-working-container index.html /var/www/html/index.html
4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889

Debes estar preguntándote de dónde vino /var/www/html. ¿Y por qué copiamos el archivo index.html en esa ruta de directorio?

Cuando instalamos el paquete httpd, se crea el directorio /var/www/html. /var/www/html es solo la carpeta raíz predeterminada del servidor web.

Para iniciar el contenedor, necesitamos configurar punto de entrada para el contenedor.

buildah config --entrypoint "/usr/sbin/httpd -DFOREGROUND" centos-working-container

La opción “-DFOREGROUND” se usa junto con “/usr/sbin/httpd” para iniciar httpd. Lo que hace “-DFOREGROUND” es que hace que el proceso httpd/apache se ejecute en primer plano en lugar de hacerlo en segundo plano. El beneficio de que el proceso httpd NO se ejecute en segundo plano es que puede ver los registros de depuración en la consola. Si no usamos la opción “-DFOREGROUND”, el servidor apache se iniciará y justo después de eso, se detendrá.

Ahora, necesitamos guardar lo que hayamos hecho dentro del contenedor. El compromiso lo hará por nosotros.

buildah commit centos-working-container  Linux-Handbook

La imagen del manual de Linux está disponible y puede enviar esta imagen al registro para usarla.

buildah images
IMAGE ID IMAGE NAME CREATED 
AT SIZE
9110ae7f579f docker.io/library/centos:latest 
Mar 31, 2019 14:36 234.7 MB
49bd5ec5be71 docker.io/library/Linux-Handbook:latest 
Apr 4, 2019 17:28 427.7 MB

Entonces, ¿todo listo para ensuciarte las manos con Buildah?

Escrito por Servesha Dudhgaonkar

Related Posts