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.-
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
-
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.
-
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
-
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.