“Docker, Docker, Docker ” eso es lo que usábamos hasta hace poco.
Docker 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, Podman, CRI-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í entre Buildah, Podman, CRI-O Decidí elegir buildah. ¿Por qué? Porque es tan interesante como otras plataformas de contenedores.
¡Sumerjámonos en Buildah!
¿Qué es Buildah?
Buildah es una herramienta de línea de comandos para crear imágenes de Open Container Initiative (OCI). Se puede usar con Docker, Podman, Kubernetes, ¡cualquiera que sea su herramienta de contenedores favorita!
Buildah se usa para crear, compilar, 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?
Instalando 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 Fedora, use
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 PPA oficial proporcionado por Project Atomic.
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. Por ejemplo, en Docker, para ver la lista de imágenes extraídas, usamos el comando 'imágenes acoplables'.
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 –help.
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.
Crear una imagen de contenedor de servidor web Apache [Práctica]
Probemos lo que acabas de aprender con un proyecto de muestra de Buildah.
¿Qué crees que se necesitará para tener un servidor web Apache ejecutándose dentro de un contenedor?
Por supuesto, una imagen, un contenedor en ejecución y ¿qué más? Bueno, lo principal que necesitaremos es instalar un paquete httpd dentro de un contenedor. ¡Vaya! ¿como hacemos eso? No hay problema. Te diré eso.
Primero extraigamos una imagen de distribución de Linux. Elige la que sea tu favorita. Saqué la imagen base de CentOS.
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 un resultado como este.
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 viene /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, 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 insertar esta imagen en el 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