Probleme mit Container-Images beheben

Hier finden Sie nützliche Informationen über die schrittweise Fehlerbehebung bei Problemen mit der Verwaltung von Container-Images in Artifact Registry.

Image kann nicht abgerufen oder in einer Google Cloud-Laufzeitumgebung bereitgestellt werden

Prüfen Sie Folgendes:

  1. Prüfen Sie, ob der vollständige Pfad des von Ihnen gepushten Bildes korrekt ist. Der Pfad muss den Hostnamen der Registry, die Google Cloud-Projekt-ID, das Repository und das Image enthalten. Beispiel:

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

    Weitere Informationen finden Sie unter Repository- und Image-Namen.

  2. Prüfen Sie, ob das Konto, das das Image abruft, Berechtigungen zum Lesen aus dem Repository hat.

    • Das Cloud Build-Standarddienstkonto hat Lese- und Schreibberechtigungen mit Repositories im selben Google Cloud-Projekt. Wenn Sie eine eines vom Nutzer bereitgestellten Dienstkontos oder Images per Push oder Pull übertragen Projekten, weisen Sie dem Dienst die Rolle „Artifact Registry-Autor“ zu das Builds ausführt.
    • Compute Engine, Cloud Run und Google Kubernetes Engine haben standardmäßig Berechtigungen für Repositories im selben Projekt. Wenn sich Artifact Registry in einem anderen Projekt als die Laufzeitumgebung befindet, müssen Sie dem Laufzeit-Dienstkonto die Rolle „Artifact Registry Reader“ zuweisen.
    • Wenn Sie Docker oder ein anderes Drittanbietertool verwenden, müssen Sie Folgendes tun:

Image kann nicht per Push an Artifact Registry übertragen werden

Prüfen Sie Folgendes:

  1. Prüfen Sie, ob das Repository vorhanden ist. Im Gegensatz zu Container Registry, ist ein anderer Vorgang vom Hochladen des ersten Images. Wenn das Repository nicht vorhanden ist, erstellen Sie es.

  2. Prüfen Sie, ob der vollständige Pfad des von Ihnen gepushten Bildes korrekt ist. Die Der Pfad muss den Hostnamen der Registry, die Google Cloud-Projekt-ID, das Repository und ein Bild. Beispiel:

    us-east1-docker.pkg.dev/my-project/my-repo/my-image:v1
    

    Jedes Artifact Registry-Repository ist eine separate Ressource, daher können Sie Image in einen Pfad ohne Repository verschieben. Beispiel: us-east1-docker.pkg.dev/my-project/my-image:v1 ist kein gültiger Image-Pfad.

    Weitere Informationen finden Sie unter Repository- und Image-Namen.

  3. Prüfen Sie, ob das Konto, das das Image überträgt, Berechtigungen zum Schreiben in das Repository.

    • Das Cloud Build-Standarddienstkonto hat Lese- und Schreibberechtigungen für Repositories im selben Google Cloud-Projekt. Wenn Sie ein von Nutzern bereitgestelltes Dienstkonto verwenden oder Images zwischen Projekten übertragen, weisen Sie dem Dienstkonto, das Builds ausführt, die Rolle „Artifact Registry-Autor“ zu.
    • Compute Engine, Cloud Run und Google Kubernetes Engine haben standardmäßig Leseberechtigungen für Repositories im selben Projekt. Wenn Sie in diesen Umgebungen ein Drittanbietertool zum Pushen von Images verwenden, müssen Sie dem Laufzeitdienstkonto die Rolle „Artifact Registry Writer“ zuweisen.
  4. Wenn Artifact Registry die Nachricht zurückgegeben hat The repository has enabled tag immutability, Tag-Unveränderlichkeit ist konfiguriert für das Repository. Sie können kein Bild mit einem Tag pushen, das bereits für eine andere Version desselben Bildes im Repository verwendet wird. Versuchen Sie noch einmal, das Bild mit einem Tag zu pushen, das von anderen gespeicherten Versionen des Bildes nicht verwendet wird.

    Um zu prüfen, ob ein Repository für unveränderliche Image-Tags konfiguriert ist, prüfen Sie die Spalte Unveränderliche Image-Tags in der Liste der Repositories in Google Cloud Console oder führen Sie den folgenden Befehl aus:

    gcloud artifacts repositories describe REPOSITORY
        --project=PROJECT-ID
        --location=LOCATION
    

Nachrichten vom Typ „ImagePullBackOff“ und „ErrImagePull“

Nachrichten mit ImagePullBackOff und ErrImagePull geben an, dass ein Image nicht von GKE aus der Registry abgerufen werden kann.