Descripción

Administrar manifiestos de imágenes de Docker y listas de manifiestos

Este comando es experimental.

Este comando es experimental en el cliente de Docker. No debe utilizarse en entornos de producción. Para habilitar funciones experimentales en la CLI de Docker, edite config.json y configure experimental para enabled.

Las funciones experimentales brindan acceso temprano a la funcionalidad del producto futuro. Estas funciones están destinadas a pruebas y comentarios solo, ya que pueden cambiar entre versiones sin previo aviso o pueden eliminarse por completo de una versión futura. Las funciones experimentales no se deben utilizar en entornos de producción. Docker no ofrece soporte para funciones experimentales. Para más información, ver Funciones experimentales.

Para habilitar funciones experimentales en la CLI de Docker, edite el config.json archivar y configurar experimental a habilitado.

Para habilitar funciones experimentales desde el menú de Docker Desktop, haga clic en Ajustes (Preferencias en macOS)> Demonio y luego seleccione el Funciones experimentales casilla de verificación.

Uso

docker manifest COMMAND COMMAND

Comandos del niño

Mando Descripción
anotar manifiesto de Docker Agregar información adicional a un manifiesto de imagen local
Crear manifiesto de Docker Cree una lista de manifiesto local para anotar y enviar a un registro
Docker manifiesto inspeccionar Mostrar un manifiesto de imagen o una lista de manifiestos
push de manifiesto de Docker Enviar una lista de manifiestos a un repositorio

Comando de padres

Mando Descripción
estibador El comando base para la CLI de Docker.

Descripción ampliada

los docker manifest el comando por sí mismo no realiza ninguna acción. Para operar en un manifiesto o una lista de manifiestos, se debe utilizar uno de los subcomandos.

Un solo manifiesto es información sobre una imagen, como capas, tamaño y resumen. El comando docker manifest también brinda a los usuarios información adicional, como el sistema operativo y la arquitectura para la que se creó una imagen.

Una lista de manifiesto es una lista de capas de imágenes que se crea especificando uno o más (idealmente más de uno) nombres de imagen. A continuación, se puede utilizar de la misma forma que el nombre de una imagen en docker pull y docker run comandos, por ejemplo.

Idealmente, una lista de manifiesto se crea a partir de imágenes que son idénticas en función para diferentes combinaciones de sistema operativo / arco. Por esta razón, las listas de manifiestos a menudo se denominan “imágenes de varios arcos”. Sin embargo, un usuario puede crear una lista de manifiesto que apunte a dos imágenes: una para Windows en amd64 y otra para Darwin en amd64.

manifiesto inspeccionar

manifest inspect --help

Usage:  docker manifest inspect [OPTIONS] [MANIFEST_LIST] MANIFEST

Display an image manifest, or manifest list

Options:
      --help       Print usage
      --insecure   Allow communication with an insecure registry
  -v, --verbose    Output additional info including layers and platform

manifiesto crear

Usage:  docker manifest create MANIFEST_LIST MANIFEST [MANIFEST...]

Create a local manifest list for annotating and pushing to a registry

Options:
  -a, --amend      Amend an existing manifest list
      --insecure   Allow communication with an insecure registry
      --help       Print usage

manifiesto anotar

Usage:  docker manifest annotate [OPTIONS] MANIFEST_LIST MANIFEST

Add additional information to a local image manifest

Options:
      --arch string               Set architecture
      --help                      Print usage
      --os string                 Set operating system
      --os-features stringSlice   Set operating system feature
      --variant string            Set architecture variant

empuje manifiesto

Usage:  docker manifest push [OPTIONS] MANIFEST_LIST

Push a manifest list to a repository

Options:
      --help       Print usage
      --insecure   Allow push to an insecure registry
  -p, --purge      Remove the local manifest list after push

Trabajar con registros inseguros

El comando de manifiesto interactúa únicamente con un registro de Docker. Debido a esto, no tiene forma de consultar el motor para obtener la lista de registros inseguros permitidos. Para permitir que la CLI interactúe con un registro inseguro, algunos docker manifest los comandos tienen un --insecure bandera. Para cada transacción, como un create, que consulta un registro, el --insecure se debe especificar la bandera. Este indicador le dice a la CLI que esta llamada de registro puede ignorar preocupaciones de seguridad como certificados faltantes o autofirmados. Asimismo, en un manifest push a un registro inseguro, el --insecure se debe especificar la bandera. Si no se usa con un registro inseguro, el comando manifest no puede encontrar un registro que cumpla con los requisitos predeterminados.

Ejemplos de

Inspeccionar el objeto de manifiesto de una imagen

$ docker manifest inspect hello-world

        "schemaVersion": 2,
        "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
        "config": 
                "mediaType": "application/vnd.docker.container.image.v1+json",
                "size": 1520,
                "digest": "sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57"
        ,
        "layers": [
                
                        "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
                        "size": 972,
                        "digest": "sha256:b04784fba78d739b526e27edc02a5a8cd07b1052e9283f5fc155828f4b614c28"
                
        ]

Inspeccione el manifiesto de una imagen y obtenga la información del sistema operativo / arco

los docker manifest inspect comando toma un opcional --verbose bandera que le da el nombre de la imagen (Ref), y la arquitectura y el sistema operativo (Plataforma).

Al igual que con otros comandos de la ventana acoplable que toman nombres de imágenes, puede hacer referencia a una imagen con o sin una etiqueta, o por resumen (p. Ej. [email protected]: f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f).

A continuación se muestra un ejemplo de cómo inspeccionar el manifiesto de una imagen con el --verbose bandera:

$ docker manifest inspect --verbose hello-world

        "Ref": "docker.io/library/hello-world:latest",
        "Digest": "sha256:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f",
        "SchemaV2Manifest": 
                "schemaVersion": 2,
                "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
                "config": 
                        "mediaType": "application/vnd.docker.container.image.v1+json",
                        "size": 1520,
                        "digest": "sha256:1815c82652c03bfd8644afda26fb184f2ed891d921b20a0703b46768f9755c57"
                ,
                "layers": [
                        
                                "mediaType": "application/vnd.docker.image.rootfs.diff.tar.gzip",
                                "size": 972,
                                "digest": "sha256:b04784fba78d739b526e27edc02a5a8cd07b1052e9283f5fc155828f4b614c28"
                        
                ]
        ,
        "Platform": 
                "architecture": "amd64",
                "os": "linux"
        

Crear y enviar una lista de manifiestos

Para crear una lista de manifiesto, primero create la lista de manifiesto localmente especificando las imágenes constituyentes que le gustaría haber incluido en su lista de manifiesto. Tenga en cuenta que esto se envía a un registro, por lo que si desea enviarlo a un registro que no sea el registro de la ventana acoplable, debe crear su lista de manifiesto con el nombre del registro o la IP y el puerto. Esto es similar a etiquetar una imagen y enviarla a un registro externo.

Después de haber creado su copia local de la lista de manifiesto, opcionalmente puede annotate eso. Las anotaciones permitidas son la arquitectura y el sistema operativo (anulando los valores actuales de la imagen), las características del sistema operativo y una variante de la arquitectura.

Finalmente, necesitas push su lista de manifiesto al registro deseado. A continuación se muestran las descripciones de estos tres comandos y un ejemplo que los pone todos juntos.

$ docker manifest create 45.55.81.106:5000/coolapp:v1 
    45.55.81.106:5000/coolapp-ppc64le-linux:v1 
    45.55.81.106:5000/coolapp-arm-linux:v1 
    45.55.81.106:5000/coolapp-amd64-linux:v1 
    45.55.81.106:5000/coolapp-amd64-windows:v1
Created manifest list 45.55.81.106:5000/coolapp:v1
$ docker manifest annotate 45.55.81.106:5000/coolapp:v1 45.55.81.106:5000/coolapp-arm-linux --arch arm
$ docker manifest push 45.55.81.106:5000/coolapp:v1
Pushed manifest 45.55.81.106:5000/[email protected]:9701edc932223a66e49dd6c894a11db8c2cf4eccd1414f1ec105a623bf16b426 with digest: sha256:f67dcc5fc786f04f0743abfe0ee5dae9bd8caf8efa6c8144f7f2a43889dc513b
Pushed manifest 45.55.81.106:5000/[email protected]:f3b3b28a45160805bb16542c9531888519430e9e6d6ffc09d72261b0d26ff74f with digest: sha256:b64ca0b60356a30971f098c92200b1271257f100a55b351e6bbe985638352f3a
Pushed manifest 45.55.81.106:5000/[email protected]:39dc41c658cf25f33681a41310372f02728925a54aac3598310bfb1770615fc9 with digest: sha256:df436846483aff62bad830b730a0d3b77731bcf98ba5e470a8bbb8e9e346e4e8
Pushed manifest 45.55.81.106:5000/[email protected]:f91b1145cd4ac800b28122313ae9e88ac340bb3f1e3a4cd3e59a3648650f3275 with digest: sha256:5bb8e50aa2edd408bdf3ddf61efb7338ff34a07b762992c9432f1c02fc0e5e62
sha256:050b213d49d7673ba35014f21454c573dcbec75254a08f4a7c34f66a47c06aba

Inspeccionar una lista de manifiestos

$ docker manifest inspect coolapp:v1

   "schemaVersion": 2,
   "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
   "manifests": [
      
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 424,
         "digest": "sha256:f67dcc5fc786f04f0743abfe0ee5dae9bd8caf8efa6c8144f7f2a43889dc513b",
         "platform": 
            "architecture": "arm",
            "os": "linux"
         
      ,
      
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 424,
         "digest": "sha256:b64ca0b60356a30971f098c92200b1271257f100a55b351e6bbe985638352f3a",
         "platform": 
            "architecture": "amd64",
            "os": "linux"
         
      ,
      
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 425,
         "digest": "sha256:df436846483aff62bad830b730a0d3b77731bcf98ba5e470a8bbb8e9e346e4e8",
         "platform": 
            "architecture": "ppc64le",
            "os": "linux"
         
      ,
      
         "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
         "size": 425,
         "digest": "sha256:5bb8e50aa2edd408bdf3ddf61efb7338ff34a07b762992c9432f1c02fc0e5e62",
         "platform": 
            "architecture": "s390x",
            "os": "linux"
         
      
   ]

Enviar a un registro inseguro

A continuación se muestra un ejemplo de cómo crear y enviar una lista de manifiestos utilizando un registro inseguro conocido.

$ docker manifest create --insecure myprivateregistry.mycompany.com/repo/image:1.0 
    myprivateregistry.mycompany.com/repo/image-linux-ppc64le:1.0 
    myprivateregistry.mycompany.com/repo/image-linux-s390x:1.0 
    myprivateregistry.mycompany.com/repo/image-linux-arm:1.0 
    myprivateregistry.mycompany.com/repo/image-linux-armhf:1.0 
    myprivateregistry.mycompany.com/repo/image-windows-amd64:1.0 
    myprivateregistry.mycompany.com/repo/image-linux-amd64:1.0
$ docker manifest push --insecure myprivateregistry.mycompany.com/repo/image:tag

Tenga en cuenta que el --insecure no se requiere la marca para anotar una lista de manifiesto, ya que las anotaciones son para una copia almacenada localmente de una lista de manifiesto. También puede omitir el --insecure marca si estás realizando una docker manifest inspect en una lista de manifiesto almacenada localmente. Asegúrese de tener en cuenta que el motor nunca usa las listas de manifiestos almacenadas localmente en un docker pull.