Red Hat Training

A Red Hat training course is available for RHEL 8

9.7. Uso de registros de contenedores con Buildah

Con Buildah, puedes empujar y sacar imágenes de contenedores entre tu sistema local y los registros de contenedores públicos o privados. Los siguientes ejemplos muestran cómo hacerlo:

  • Empuje los contenedores hacia y desde un registro privado con buildah.
  • Empuje y tire del contenedor entre su sistema local y el Registro Docker.
  • Utiliza las credenciales para asociar tus contenedores con una cuenta de registro cuando los empujes.

Utilice el comando skopeo, junto con el comando buildah, para consultar los registros en busca de información sobre las imágenes de los contenedores.

9.7.1. Envío de contenedores a un registro privado

El envío de contenedores a un registro de contenedores privado con el comando buildah funciona de forma muy similar al envío de contenedores con el comando docker. Es necesario:

  • Configure un registro privado (OpenShift proporciona un registro de contenedores o puede configurar un registro de contenedores de Red Hat Quay).
  • Cree o adquiera la imagen del contenedor que desea impulsar.
  • Utilice buildah push para enviar la imagen al registro.

Para empujar una imagen desde su almacenamiento local de contenedores Buildah, compruebe el nombre de la imagen, y luego empuje utilizando el comando buildah push. Recuerda identificar tanto el nombre de la imagen local como un nuevo nombre que incluya la ubicación. Por ejemplo, un registro que se ejecuta en el sistema local que está escuchando en el puerto TCP 5000 se identificaría como localhost:5000.

# buildah images
IMAGE ID     IMAGE NAME                       CREATED AT          SIZE
cb702d492ee9 docker.io/library/myecho2:latest Nov 12, 2018 16:50     3.143 KB

# buildah push --tls-verify=false myecho2:latest localhost:5000/myecho2:latest
Getting image source signatures
Copying blob sha256:e4efd0...
...
Writing manifest to image destination
Storing signatures

Utilice el comando curl para listar las imágenes en el registro y skopeo para inspeccionar los metadatos sobre la imagen:

# curl http://localhost:5000/v2/_catalog
{"repositories":["myatomic","myecho2"]}
# curl http://localhost:5000/v2/myecho2/tags/list
{"name":"myecho2","tags":["latest"]}
# skopeo inspect --tls-verify=false docker://localhost:5000/myecho2:latest | less
{
    "Name": "localhost:5000/myecho2",
    "Digest": "sha256:8999ff6050...",
    "RepoTags": [
        "latest"
    ],
    "Created": "2017-11-21T16:50:25.830343Z",
    "DockerVersion": "",
    "Labels": {
        "architecture": "x86_64",
        "authoritative-source-url": "registry.redhat.io",

En este punto, cualquier herramienta que pueda extraer imágenes de contenedores de un registro de contenedores puede obtener una copia de tu imagen empujada. Por ejemplo, en un sistema RHEL 7 podrías iniciar el demonio docker y tratar de extraer la imagen para que pueda ser utilizada por el comando docker de la siguiente manera:

# systemctl start docker
# docker pull localhost:5000/myecho2
# docker run localhost:5000/myecho2
This container works!