Pide tu presupuesto ya!

Creación de imágenes OCI con Buildah

Creación de imágenes OCI desde cero

Los Dockerfiles proporcionan una forma estructurada y reproducible de definir imágenes, lo cual funciona muy bien. ¿Pero sabía que también puede adaptar cada aspecto del entorno de su contenedor para cumplir con sus requisitos únicos?

La creación de imágenes OCI desde cero ofrece la máxima flexibilidad. Por ejemplo, puede reducir el tamaño de la imagen final instalando sólo los paquetes necesarios para su aplicación.

Para crear una imagen OCI desde cero, haga lo siguiente:

1. Ejecute el siguiente comando para install debootstrap en su sistema. debootstrap es su compañero ideal para crear entornos Debian mínimos desde cero.

Esta herramienta reúne meticulosamente lo esencial al buscar y descomprimir archivos de Debian en un subdirectorio designado. ¿El resultado? Un entorno Debian mínimo que forma la base para sus configuraciones y aplicaciones personalizadas.

Instalación del paquete debootstrap para crear entornos Debian mínimos

2. Con debootstrap instalado, ejecute los siguientes comandos para crear un contenedor ($newcontainer) con la imagen base más mínima disponible (scratch).

# Create a minimal working container using the 'scratch' base image
newcontainer=$(buildah from scratch)

# Verify the creation of the new working container
buildah containers

Como se ve a continuación, un nuevo contenedor llamado contenedor de trabajo es creado.

Creando un contenedor desde cero

3. A continuación, ejecute los siguientes comandos para lograr lo siguiente:

  • Recuperar y almacenar el mount punto de la working-container sistema de archivos en la variable de entorno scratchmnt.
  • Imprimir (echo) el punto de montaje obtenido ($scratchmnt).
scratchmnt=$(buildah mount $newcontainer)
echo $scratchmnt

La siguiente información puede ser crucial cuando se trabaja con el contenido del contenedor, permitiéndole manipular archivos y directorios desde el sistema host.

Capturando el punto de montaje del sistema de archivos del contenedor de trabajo
Capturando el punto de montaje del contenedor de trabajo sistema de archivos

4. Ahora, ejecuta el debootstrap comando a continuación para instalar Debian bookworm sistema base al $scratchmnt directorio donde contenedor de trabajo esta montado.

debootstrap bookworm $scratchmnt
Instalación del sistema base Debian en el contenedor borrador
Instalación del sistema base Debian en el contenedor borrador

5. Una vez instalado, ejecute los siguientes comandos para ejecutar el bash shell dentro del contenedor especificado por la variable $newcontainer y exit El contenedor.

# Execute the bash shell
buildah run $newcontainer bash
# Or press Ctrl+D to exit the container
exit
Ejecutar un shell Bash interactivo dentro de un contenedor (contenedor de trabajo)
Ejecutar un shell Bash interactivo dentro de un contenedor (contenedor de trabajo)

6. Cree una nueva aplicación de muestra llamada hola.sh en su editor preferido e inserte el siguiente código, que imprime un mensaje 10 veces.

#!/usr/bin/env bash
for i in {1..10}; do
   echo "Hello Buildah - diseño-web-barato.com"
done

7. Ejecute lo siguiente chmod comando, que no tiene salida si tiene éxito, para hacer el *hello.sh* archivo ejecutable.

8. Ahora, ejecute el siguiente comando para copiar el hello.sh archivo al working-container directorio (/usr/bin). Al hacerlo, se garantiza que el script sea ejecutable y accesible dentro del contenedor.

buildah copy $newcontainer ./hello.sh /usr/bin
Copiar el script hello.sh al directorio /usr/bin
Copiando el hola.sh guión para el /usr/bin directorio

9. Una vez copiado, ejecute el buildah config comando a continuación para configurar el comando predeterminado (--cmd) que se ejecutará cuando se inicie el contenedor.

El comando predeterminado en este caso es /usr/bin/hello.shque ejecuta su hello.sh guion.

buildah config --cmd /usr/bin/hello.sh $newcontainer

10. Además, ejecute los siguientes comandos para crear una nueva imagen OCI (commit) llamado nginx-debian basado en el contenedor working-container y verificar la lista de images.

# Commit the changes to create a new image named 'nginx-debian'
buildah commit $newcontainer nginx-debian

# List available container images, including 'nginx-debian'
buildah images

En el resultado siguiente, el nginx-debian La imagen está disponible entre otras imágenes.

Creando una nueva imagen OCI (nginx-debian) desde cero
Creando una nueva imagen OCI (nginx-debian) desde cero

11. Ahora, ejecute los siguientes comandos para unmount y eliminar (rm) working-container.

Estos comandos no tienen salida, pero este proceso garantiza los recursos asociados con el working-container son liberados y limpiados adecuadamente.

buildah unmount working-container
buildah rm working-container

12. Finalmente, ejecute el siguiente comando para realizar lo siguiente:

  • Cree un nuevo contenedor basado en el nginx-debian imagen y run ese contenedor.
  • Elimina (--rm) el contenedor automáticamente una vez que se completa la ejecución.

Este enfoque es una práctica común para contenedores de corta duración donde el objetivo es ejecutar una tarea y luego descartar el contenedor. Lo último que querrías es que estos contenedores se quedaran pegados y abarrotaran tu sistema, volviéndote loco.

podman run --rm nginx-debian

Como se muestra a continuación, el contenedor ejecuta el comando de inicio (/usr/bin/hola.sh) e impresiones Hola Buildah – diseño-web-barato.com 10 veces.

Este resultado demuestra la creación exitosa y la funcionalidad de su nginx-debian imagen del contenedor.

Ejecutar un contenedor desechable con limpieza automática.
Ejecutar un contenedor desechable con limpieza automática.
Written by

Leave a comment