Capítulo 9. Creación de imágenes de contenedores con Buildah
El comando buildah
permite crear imágenes de contenedores a partir de un contenedor en funcionamiento, un archivo Docker o desde cero. Las imágenes resultantes son compatibles con OCI, por lo que funcionarán en cualquier tiempo de ejecución de contenedores que cumpla con la especificación de tiempo de ejecución de OCI (como Docker y CRI-O).
Esta sección describe cómo utilizar el comando buildah
para crear y trabajar con contenedores e imágenes de contenedores.
9.1. Comprensión de Buildah
El uso de Buildah se diferencia de la construcción de imágenes con el comando docker
en los siguientes aspectos:
- No Daemon!: ¡Evita el demonio Docker! Así que no se necesita ningún tiempo de ejecución del contenedor (Docker, CRI-O, u otro) para utilizar Buildah.
- Base image or scratch: Le permite no sólo construir una imagen basada en otro contenedor, sino que también le permite empezar con una imagen vacía (desde cero).
Build tools external: No incluye herramientas de construcción dentro de la propia imagen. Como resultado, Buildah:
- Reduce el tamaño de las imágenes que construye
- Hace que la imagen sea más segura al no tener el software utilizado para construir el contenedor (como gcc, make y yum) dentro de la imagen resultante.
- Crea imágenes que requieren menos recursos para transportarlas (porque son más pequeñas).
Buildah es capaz de operar sin Docker u otros tiempos de ejecución de contenedores almacenando los datos por separado e incluyendo características que te permiten no sólo construir imágenes, sino también ejecutar esas imágenes como contenedores. Por defecto, Buildah almacena las imágenes en un área identificada como containers-storage
(/var/lib/containers).
La ubicación de almacenamiento de contenedores que el comando buildah
utiliza por defecto es el mismo lugar que el motor de contenedores CRI-O utiliza para almacenar las copias locales de las imágenes. Por lo tanto, las imágenes extraídas de un registro por CRI-O o Buildah, o confirmadas por el comando buildah
, se almacenarán en la misma estructura de directorios. Actualmente, sin embargo, CRI-O y Buildah no pueden compartir contenedores, aunque sí pueden compartir imágenes.
Hay más de una docena de opciones para utilizar con el comando buildah
. Algunas de las principales actividades que puede realizar con el comando buildah
incluyen:
-
Build a container from a Dockerfile: Utiliza un Dockerfile para construir una nueva imagen de contenedor (
buildah bud
). -
Build a container from another image or scratch: Construye un nuevo contenedor, partiendo de una imagen base existente (
buildah from <imagename>
) o desde cero (buildah from scratch
) -
Inspecting a container or image: Ver los metadatos asociados al contenedor o a la imagen (
buildah inspect
) -
Mount a container: Montar el sistema de archivos raíz de un contenedor para añadir o cambiar el contenido (
buildah mount
). -
Create a new container layer: Utiliza el contenido actualizado del sistema de archivos raíz de un contenedor como capa del sistema de archivos para confirmar el contenido de una nueva imagen (
buildah commit
). -
Unmount a container: Desmontar un contenedor montado (
buildah umount
). -
Delete a container or an image: Eliminar un contenedor (
buildah rm
) o una imagen de contenedor (buildah rmi
).
Para más detalles sobre Buildah, consulta la página de GitHub Buildah. La página de GitHub Buildah incluye páginas man y software que podría ser más reciente que el disponible con la versión de RHEL. Aquí hay otros artículos sobre Buildah que podrían interesarte:
9.1.1. Instalación de Buildah
El paquete buildah está disponible con el módulo container-tools en RHEL 8 (yum module install container-tools
). Puede instalar el paquete buildah por separado escribiendo:
# yum -y install buildah
Con el paquete buildah instalado, puede consultar las páginas man incluidas en el paquete buildah para obtener detalles sobre su uso. Para ver las páginas man disponibles y otra documentación, abra una página man, escriba:
# rpm -qd buildah # man buildah buildah(1) General Commands Manual buildah(1) NAME Buildah - A command line tool that facilitates building OCI container images. ...
Las siguientes secciones describen cómo utilizar buildah
para obtener contenedores, construir un contenedor a partir de un archivo Docker, construir uno desde cero, y gestionar contenedores de varias maneras.