IBM Cloud Docs
Pourquoi est-ce que j'obtiens une erreur de liste de manifeste invalide dans Container Registry?

Pourquoi est-ce que j'obtiens une erreur de liste de manifeste invalide dans Container Registry?

Lorsque vous tentez de baliser votre liste de manifeste ou l'index d'image OCI dans IBM Cloud® Container Registry, vous obtenez une erreur de liste de manifeste non valide.CRI0304E The manifest list or OCI index that you are tagging references an image that doesn't exist

Vous obtenez l'erreur suivante de liste de manifestes non valide lorsque vous tentez d' étiqueter votre liste de manifestes ou l'index d'image OCI dans IBM Cloud Container Registry: CRI0304E The manifest list or OCI index that you are tagging references an image that doesn't exist, see https://cloud.ibm.com/docs/Registry?topic=Registry-troubleshoot-manifest-list-error.

Les listes de manifestes et les index d'image OCI contiennent une liste de références vers des images différentes, où chaque image est pour une architecture différente. Lorsque vous étiquetez une liste de manifestes ou un index d'image OCI, Container Registry tente de copier les images référencées. Lorsque vous recevez ce message d'erreur, cela indique que l'une de ces images référencées n'a pas été trouvée dans le registre.

Pour comprendre comment résoudre ce problème, vous devez déterminer quelles images sont référencées dans la liste des manifestes ou dans l'index des images OCI en exécutant la commande suivante, où SOURCE_IMAGE est le nom de l'image source :

ibmcloud cr manifest-inspect SOURCE_IMAGE

La sortie de qui est similaire à cette sortie :

{
    "schemaVersion": 2,
    "mediaType": "application/vnd.docker.distribution.manifest.list.v2+json",
    "manifests": [
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 528,
            "digest": "sha256:865b0c35e6da393b8e80b7e3799f777572399a4cff047eb02a81fa6e7a48ed4b",
            "platform": {
                "architecture": "amd64",
                "os": "linux"
            }
        },
        {
            "mediaType": "application/vnd.docker.distribution.manifest.v2+json",
            "size": 538,
            "digest": "sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc",
            "platform": {
                "architecture": "ppc64le",
                "os": "linux"
            }
        }
    ]
}

Pour que cette sortie soit valide, les images, avec leshistoriques de la sortie précédente, doivent exister dans le même référentiel que la liste des manifestes ou l'index OCI que vous tentez de marquer. Pour vérifier si l'une des images est manquante, vous pouvez exécuter la commande suivante. Remplacez SRC_REPO par le nom de votre espace de nom et de votre référentiel au format mynamespace/myrepo.

ibmcloud cr digests --restrict SRC_REPO

Par exemple, si vous exécutez la commande suivante :

ibmcloud cr  digests --restrict mynamespace/myrepo

Vous obtenez la réponse suivante :

Listing images...

Repository                  Digest                                                                    Tags   Type                                 Created       Size     Security status
icr.io/mynamespace/myrepo   sha256:865b0c35e6da393b8e80b7e3799f777572399a4cff047eb02a81fa6e7a48ed4b   -      Docker Image Manifest V2, Schema 2   4 days ago    1.8 MB   -
icr.io/mynamespace/myrepo   sha256:a08e18417cec86f570be496b8bde1350dd986fc354d091b44d6a536570c26193   list   Docker Manifest List                 -             433 B    -

OK

Dans l'exemple précédent, vous pouvez voir qu'une seule image se trouve dans le même référentiel que la liste des manifestes sha256:865b0c35e6da393b8e80b7e3799f777572399a4cff047eb02a81fa6e7a48ed4b et, par conséquent, la liste des manifestes fait référence à une autre image sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc qui n'existe pas actuellement dans le référentiel.

Vous pouvez résoudre ce problème en utilisant l'une des options suivantes, à partir de l'exemple précédent.

  • Si l'image manquante existe ailleurs dans le registre, vous pouvez utiliser la commande ibmcloud cr image-tag pour déplacer l'image vers le même référentiel.

    1. Pour détecter si le condensé manquant existe ailleurs dans le registre, exécutez la commande suivante.

      ibmcloud cr digests --format '{{if eq .Digest "sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc"}}{{.Repository}}@{{.Digest}}{{end}}'
      icr.io/myrepo2/image2@sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc
      
    2. Si la commande précédente renvoie une image, vous pouvez la copier dans le même dépôt que la liste des manifestes.

      ibmcloud cr image-tag icr.io/mynamespace/myrepo2@sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc icr.io/mynamespace/myrepo:ppc64le
      
  • Si l'image manquante a été supprimée au cours des 30 derniers jours, vous pouvez la restaurer à partir de la corbeille.

    1. Déterminez si l'image existe dans la corbeille en exécutant la commande suivante.

      ibmcloud cr trash-list --restrict mynamespace
      

      Vous recevez la réponse suivante :

      Listing the contents of the trash...
      
      Digest                                                                                              Days until expiry   Tags
      icr.io/mynamespace/myrepo@sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc   30                  ppc64le
      
      
      OK
      
    2. Si l'image existe dans la corbeille, vous pouvez la restaurer en exécutant la commande suivante.

      ibmcloud cr image-restore icr.io/mynamespacemyrepo@sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc
      

      Vous recevez la réponse suivante :

      Restoring digest 'icr.io/mynamespace/myrepo@sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc' ...
      
      Successfully restored digest 'icr.io/mynamespace/myrepo@sha256:1d71e323557502cc78ee6c237331a09b0c33ba59c14e5f683da3b1c6218779cc'
      Successfully restored tags: ppc64le
      
      OK
      
  • Si vous avez une copie locale de l'image, vous pouvez la renvoyer au registre. Pour plus d'informations, voir Insertion d'images Docker dans votre espace de nom.