Capítulo 5. Ejecución de Skopeo y Buildah en un contenedor
Con Skopeo, puede inspeccionar imágenes en un registro remoto sin tener que descargar la imagen completa con todas sus capas. También puede utilizar Skopeo para copiar imágenes, firmar imágenes, sincronizar imágenes y convertir imágenes en diferentes formatos y compresiones de capas.
Buildah facilita la construcción de imágenes de contenedores OCI. Con Buildah, puedes crear un contenedor de trabajo, ya sea desde cero o utilizando una imagen como punto de partida. Puedes crear una imagen desde un contenedor en funcionamiento o a través de las instrucciones de un archivo Docker. Puedes montar y desmontar el sistema de archivos raíz de un contenedor en funcionamiento.
Razones para ejecutar Buildah y Skopeo en un contenedor:
- Skopeo: Puede ejecutar un sistema CI/CD dentro de Kubernetes o utilizar OpenShift para construir sus imágenes de contenedor, y posiblemente distribuir esas imágenes a través de diferentes registros de contenedores. Para integrar Skopeo en un flujo de trabajo de Kubernetes, es necesario ejecutarlo en un contenedor.
-
Buildah: Quieres construir imágenes de OCI/contenedor dentro de un sistema de CI/CD de Kubernetes u OpenShift que está constantemente construyendo imágenes. Anteriormente, la gente utilizaba un socket Docker para conectarse al motor de contenedores y realizar un comando
docker build
. Esto era el equivalente a dar acceso de root al sistema sin requerir una contraseña, lo cual no es seguro. Por esta razón, Red Hat recomienda utilizar Buildah en un contenedor. - Both: Estás ejecutando un sistema operativo antiguo en el host pero quieres ejecutar la última versión de Skopeo, Buildah, o ambos. La solución es ejecutar Buildah en un contenedor. Por ejemplo, esto es útil para ejecutar la última versión de Skopeo, Buildah, o ambos proporcionados en RHEL 8 en un host contenedor RHEL 7 que no tiene acceso a las versiones más nuevas de forma nativa.
- Both: Una restricción común en los entornos HPC es que los usuarios no root no pueden instalar paquetes en el host. Cuando ejecutas Skopeo, Buildah, o ambos en un contenedor, puedes realizar estas tareas específicas como usuario no root.
5.1. Ejecución de Skopeo en un contenedor
Este procedimiento demuestra cómo inspeccionar una imagen de contenedor remoto utilizando Skopeo. Ejecutar Skopeo en un contenedor significa que el sistema de archivos raíz del contenedor está aislado del sistema de archivos raíz del host. Para compartir o copiar archivos entre el host y el contenedor, tienes que montar archivos y directorios.
Procedimiento
Inicie sesión en el registro de registry.redhat.io:
$ podman login registry.redhat.io Username: myuser@mycompany.com Password: *********** Login Succeeded!
Obtenga la imagen del contenedor
registry.redhat.io/rhel8/skopeo
:$ podman pull registry.redhat.io/rhel8/skopeo
Inspeccionar una imagen de contenedor remoto
registry.access.redhat.com/ubi8/ubi
utilizando Skopeo:$ podman run --rm registry.redhat.io/rhel8/skopeo skopeo inspect docker://registry.access.redhat.com/ubi8/ubi { "Name": "registry.access.redhat.com/ubi8/ubi", ... "Labels": { "architecture": "x86_64", ... "name": "ubi8", ... "summary": "Provides the latest release of Red Hat Universal Base Image 8.", "url": "https://access.redhat.com/containers/#/registry.access.redhat.com/ubi8/images/8.2-347", ... }, "Architecture": "amd64", "Os": "linux", "Layers": [ ... ], "Env": [ "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", "container=oci" ] }
La opción
--rm
elimina la imagenregistry.redhat.io/rhel8/skopeo
tras la salida del contenedor.
Recursos adicionales
- Para más información sobre cómo ejecutar Skopeo en un contenedor, consulte el artículo Cómo ejecutar skopeo en un contenedor, de Valentin Rothberg.