Cómo usar el comando docker manifest annotate para agregar información de plataforma

DockerDockerBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo utilizar el comando docker manifest annotate para agregar información de plataforma a una lista de manifiestos de Docker. Comenzaremos creando una lista de manifiestos que incluya diferentes versiones de arquitectura de la imagen alpine.

Después de crear la lista de manifiestos, practicarás la anotación de manifiestos individuales dentro de la lista para especificar la arquitectura, el sistema operativo, las características del sistema operativo, la versión y las variantes de arquitectura. Finalmente, inspeccionarás la lista de manifiestos anotada para verificar la información de plataforma agregada. Este proceso es esencial para construir y distribuir imágenes de Docker multi-arquitectura de manera efectiva.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/inspect("Inspect Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/tag("Tag an Image") subgraph Lab Skills docker/inspect -.-> lab-555168{{"Cómo usar el comando docker manifest annotate para agregar información de plataforma"}} docker/pull -.-> lab-555168{{"Cómo usar el comando docker manifest annotate para agregar información de plataforma"}} docker/tag -.-> lab-555168{{"Cómo usar el comando docker manifest annotate para agregar información de plataforma"}} end

Crear una lista de manifiestos

En este paso, aprenderemos cómo crear una lista de manifiestos. Una lista de manifiestos es un índice de manifiestos de imágenes que te permite hacer referencia a múltiples imágenes para diferentes arquitecturas y sistemas operativos con un solo nombre. Esto es especialmente útil para distribuir imágenes multi-arquitectura.

Antes de crear una lista de manifiestos, necesitamos tener algunas imágenes disponibles. Para este laboratorio, usaremos la imagen alpine para diferentes arquitecturas. Descargaremos las versiones amd64 y arm64 de la imagen alpine.

Primero, descarga la versión amd64 de la imagen alpine:

docker pull alpine:latest

Deberías ver una salida que indique que la imagen se está descargando y extrayendo.

A continuación, descarga la versión arm64 de la imagen alpine. Ten en cuenta que debemos especificar la plataforma para esta descarga.

docker pull --platform arm64 alpine:latest

Nuevamente, verás una salida que muestra que la imagen se está descargando.

Ahora que tenemos las imágenes, podemos crear una lista de manifiestos. Usaremos el comando docker manifest create. Este comando toma el nombre de la lista de manifiestos que deseas crear, seguido de los nombres de las imágenes que deseas incluir en la lista.

Creemos una lista de manifiestos llamada my-alpine-list que incluya las imágenes alpine:latest (amd64) y alpine:latest (arm64).

docker manifest create my-alpine-list alpine:latest alpine:latest --amend --amend

La bandera --amend se utiliza para agregar o actualizar entradas en la lista de manifiestos. La usamos dos veces aquí porque estamos agregando dos imágenes.

Después de ejecutar este comando, has creado una lista de manifiestos. Sin embargo, esta lista solo se almacena localmente por ahora. En un paso posterior, la enviaremos a un registro.

Anotar un manifiesto con arquitectura y sistema operativo

En este paso, anotaremos la lista de manifiestos que creamos en el paso anterior. Anotar un manifiesto te permite agregar metadatos a él, como la arquitectura y el sistema operativo para los que está destinada la imagen. Esta información es crucial para que Docker seleccione la imagen correcta de una lista de manifiestos en función del entorno en el que se está ejecutando el contenedor.

Usaremos el comando docker manifest annotate para agregar información de arquitectura y sistema operativo a las entradas de nuestra lista de manifiestos my-alpine-list. El comando toma el nombre de la lista de manifiestos, el nombre de la imagen dentro de la lista y las banderas de anotación.

Primero, anotemos la imagen alpine:latest que corresponde a la arquitectura amd64 y el sistema operativo linux.

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux

Este comando le dice a Docker que la imagen alpine:latest en la lista de manifiestos my-alpine-list es para la arquitectura amd64 y el sistema operativo linux.

A continuación, anotaremos la imagen alpine:latest que corresponde a la arquitectura arm64 y el sistema operativo linux.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux

Este comando anota la otra imagen alpine:latest en la lista, especificando que es para la arquitectura arm64 y el sistema operativo linux.

Al anotar la lista de manifiestos con información de arquitectura y sistema operativo, hacemos posible que Docker seleccione automáticamente la imagen correcta cuando un usuario descarga my-alpine-list en un sistema con una arquitectura específica.

Anotar un manifiesto con características y versión del sistema operativo

En este paso, continuaremos anotando nuestra lista de manifiestos agregando información sobre las características y la versión del sistema operativo. Aunque es menos común para imágenes básicas como Alpine, estas anotaciones pueden ser útiles para imágenes que requieren capacidades o versiones específicas del sistema operativo.

El comando docker manifest annotate nos permite especificar las características del sistema operativo utilizando la bandera --os-features y la versión del sistema operativo utilizando la bandera --os-version.

Supongamos, con fines ilustrativos, que nuestra imagen Alpine de amd64 requiere una característica específica del sistema operativo (por ejemplo, fips) y está compilada para una versión específica del sistema operativo (por ejemplo, 1.0). Anotaremos la entrada de amd64 en nuestra my-alpine-list con esta información.

docker manifest annotate my-alpine-list alpine:latest --arch amd64 --os linux --os-features fips --os-version 1.0

Este comando actualiza la anotación para la entrada de amd64 en my-alpine-list, agregando la característica y la versión del sistema operativo especificadas.

De manera similar, supongamos que nuestra imagen Alpine de arm64 requiere una característica diferente del sistema operativo (por ejemplo, selinux) y está compilada para una versión diferente del sistema operativo (por ejemplo, 2.0). Anotaremos la entrada de arm64.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --os-features selinux --os-version 2.0

Este comando actualiza la anotación para la entrada de arm64, agregando su característica y versión específicas del sistema operativo.

Al agregar estas anotaciones, proporcionas información más detallada sobre los requisitos y la compatibilidad de la imagen, que puede ser utilizada por Docker u otras herramientas al seleccionar una imagen de la lista de manifiestos.

Anotar un manifiesto con variante de arquitectura

En este paso, agregaremos información de variante de arquitectura a nuestra lista de manifiestos. Las variantes de arquitectura se utilizan para distinguir entre diferentes versiones o implementaciones de la misma arquitectura. Por ejemplo, la arquitectura arm tiene variantes como v6, v7 y v8.

Utilizamos el comando docker manifest annotate con la bandera --variant para especificar la variante de arquitectura.

Supongamos que nuestra imagen Alpine de arm64 está específicamente compilada para la variante v8 de la arquitectura arm64. Anotaremos la entrada de arm64 en nuestra my-alpine-list con esta información.

docker manifest annotate my-alpine-list alpine:latest --arch arm64 --os linux --variant v8

Este comando actualiza la anotación para la entrada de arm64 en my-alpine-list, agregando la información de la variante v8.

Para la arquitectura amd64, las variantes son menos comunes, pero se podría especificar una si fuera necesario. Para este laboratorio, no agregaremos una variante a la entrada de amd64.

Al agregar información de variante de arquitectura, se proporcionan detalles aún más específicos sobre la compatibilidad de la imagen, lo que permite a Docker seleccionar la imagen más adecuada para un sistema dado.

Inspeccionar la lista de manifiestos anotada

En este último paso, inspeccionaremos la lista de manifiestos que hemos creado y anotado para ver la información que hemos agregado. El comando docker manifest inspect te permite ver los detalles de una lista de manifiestos, incluyendo los manifiestos que contiene y sus anotaciones.

Para inspeccionar nuestra lista de manifiestos my-alpine-list, ejecuta el siguiente comando:

docker manifest inspect my-alpine-list

Este comando mostrará un documento JSON que representa la lista de manifiestos. Deberías ver entradas tanto para las imágenes amd64 como para las arm64, junto con las anotaciones que agregamos en los pasos anteriores, como architecture, os, os.features, os.version y variant.

Busca la matriz manifests en la salida. Cada objeto dentro de esta matriz representa una imagen incluida en la lista de manifiestos. Deberías poder encontrar el campo platform dentro de cada objeto de manifiesto, que contiene la información de architecture, os, os.features y os.version. Para la entrada arm64, también deberías ver el campo variant.

Inspeccionar la lista de manifiestos es una buena manera de verificar que tus anotaciones se hayan aplicado correctamente y que la lista de manifiestos esté configurada como lo pretendías.

Resumen

En este laboratorio, aprendimos cómo crear una lista de manifiestos de Docker, que actúa como un índice para múltiples manifiestos de imágenes, lo que permite la distribución de imágenes multi-arquitectura bajo un solo nombre. Comenzamos descargando imágenes alpine para las arquitecturas amd64 y arm64. Posteriormente, utilizamos el comando docker manifest create con la bandera --amend para construir una lista de manifiestos local llamada my-alpine-list, incorporando las imágenes descargadas.

Después de crear la lista de manifiestos, exploramos cómo anotar manifiestos individuales dentro de la lista utilizando el comando docker manifest annotate. Este proceso implicó agregar metadatos cruciales, como información de arquitectura y sistema operativo. Demostramos específicamente cómo anotar un manifiesto con detalles de arquitectura y sistema operativo, y luego exploramos cómo agregar información de características del sistema operativo, versión y variante de arquitectura. Finalmente, aprendimos cómo inspeccionar la lista de manifiestos anotada para verificar los metadatos agregados, asegurándonos de que la lista refleje con precisión las características de las imágenes incluidas.