Red Hat Training

A Red Hat training course is available for RHEL 8

11.3. skopeo

Con el comando skopeo, puedes trabajar con imágenes de contenedores desde registros sin usar el demonio docker o el comando docker. Los registros pueden incluir el Registro Docker, sus propios registros locales, los registros de Red Hat Quay u OpenShift. Las actividades que puedes hacer con skopeo incluyen:

  • inspect: La salida de un comando skopeo inspect es similar a la de un comando docker inspect: información de bajo nivel sobre la imagen del contenedor. Esa salida puede estar en formato json (por defecto) o en formato raw (usando la opción --raw ).
  • copy: Con skopeo copy puede copiar una imagen de contenedor de un registro a otro registro o a un directorio local.
  • layers: El comando skopeo layers permite descargar las capas asociadas a las imágenes para que se almacenen como bolas de tar y archivos de manifiesto asociados en un directorio local.

Al igual que el comando buildah y otras herramientas que dependen de la biblioteca containers/image, el comando skopeo puede trabajar con imágenes de áreas de almacenamiento de contenedores distintas a las asociadas a Docker. Los transportes disponibles a otros tipos de almacenamiento de contenedores incluyen: containers-storage (para imágenes almacenadas por buildah y CRI-O), ostree (para contenedores atómicos y de sistema), oci (para contenido almacenado en un directorio compatible con OCI), y otros. Consulte la página man de skopeo para más detalles.

Para probar skopeo, puedes configurar un registro local, y luego ejecutar los comandos que siguen para inspeccionar, copiar y descargar capas de imágenes. Si quieres seguir los ejemplos, empieza por hacer lo siguiente:

  • Instale un registro local (como Red Hat Quay. El software de registro de contenedores disponible en el paquete de distribución de Docker para RHEL 7, no está disponible para RHEL 8.
  • Extraiga la última imagen de RHEL a su sistema local (podman pull ubi8/ubi).
  • Vuelva a etiquetar la imagen RHEL y póngala en su registro local de la siguiente manera:

    # podman tag ubi8/ubi localhost/myubi8
    # podman push localhost/myubi8

El resto de esta sección describe cómo inspeccionar, copiar y obtener capas de la imagen RHEL.

Nota

La herramienta skopeo requiere por defecto una conexión TLS. Falla cuando intenta utilizar una conexión no cifrada. Para anular el valor predeterminado y utilizar un registro http, añada http: a la cadena <registry>/<image>.

11.3.1. Inspección de imágenes de contenedores con skopeo

Cuando se inspecciona una imagen de contenedor desde un registro, es necesario identificar el formato del contenedor (como docker), la ubicación del registro (como docker.io o localhost) y el repositorio/imagen (como ubi8/ubi).

El siguiente ejemplo inspecciona la imagen del contenedor mariadb desde el Registro Docker:

# skopeo inspect docker://docker.io/library/mariadb
{
    "Name": "docker.io/library/mariadb",
    "Tag": "latest",
    "Digest": "sha256:d3f56b143b62690b400ef42e876e628eb5e488d2d0d2a35d6438a4aa841d89c4",
    "RepoTags": [
        "10.0.15",
        "10.0.16",
        "10.0.17",
        "10.0.19",
...
    "Created": "2018-06-10T01:53:48.812217692Z",
    "DockerVersion": "1.10.3",
    "Labels": {},
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
...

Asumiendo que has empujado una imagen de contenedor con la etiqueta localhost/myubi8 a un registro de contenedores que se ejecuta en tu sistema local, el siguiente comando inspecciona esa imagen:

# skopeo inspect docker://localhost/myubi8
{
    "Name": "localhost/myubi8",
    "Tag": "latest",
    "Digest": "sha256:4e09c308a9ddf56c0ff6e321d135136eb04152456f73786a16166ce7cba7c904",
    "RepoTags": [
        "latest"
    ],
    "Created": "2018-06-16T17:27:13Z",
    "DockerVersion": "1.7.0",
    "Labels": {
        "Architecture": "x86_64",
        "Authoritative_Registry": "registry.access.redhat.com",
        "BZComponent": "rhel-server-docker",
        "Build_Host": "rcm-img01.build.eng.bos.redhat.com",
        "Name": "myubi8",
        "Release": "75",
        "Vendor": "Red Hat, Inc.",
        "Version": "8.0"
    },
    "Architecture": "amd64",
    "Os": "linux",
    "Layers": [
        "sha256:16dc1f96e3a1bb628be2e00518fec2bb97bd5933859de592a00e2eb7774b6ecf"
    ]
}