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.

Syntax der Projekt-ID in der Docker CLI

Da Docker Doppelpunkte anders behandelt, müssen Sie in der Docker CLI Doppelpunkte (:) in Ihrer Projekt-ID durch einen Schrägstrich (/) ersetzen. Weitere Informationen finden Sie unter Auf Domains beschränkte Projekte.

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 Images, das Sie per Push übertragen, korrekt ist. Der Pfad muss den Hostnamen der Registry, Google Cloud, die Projekt-ID, das Repository und das Image enthalten. Beispiel:
    us-west1-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, mit dem das Image abgerufen wird, die richtigen Berechtigungen zum Lesen aus dem Repository hat. Wenn Sie die automatische Rollenzuweisung für Dienstkonten deaktiviert haben, müssen Sie den Laufzeitdienst konten Artifact Registry-Rollen zuweisen.
    • Für Compute Engine-, Cloud Run- und Google Kubernetes Engine-Dienstkonten müssen Sie dem Laufzeitdienstkonto die Rolle Artifact Registry-Leser (roles/artifactregistry.reader) zuweisen.
    • Für Ihr Cloud Build-Dienstkonto müssen Sie dem Dienstkonto, mit dem Builds ausgeführt werden, die Rolle Artifact Registry-Autor (roles/artifactregistry.writer) zuweisen.
    • Wenn Sie Docker oder ein anderes Drittanbietertool verwenden, müssen Sie Folgendes tun:

Image kann nicht per Push in Artifact Registry übertragen werden

Geben Sie Folgendes ein:

  1. Prüfen Sie, ob das Repository vorhanden ist. Im Gegensatz zu Container Registry, Repository-Erstellung ist ein separater Vorgang vom Übertragen des ersten Images. Wenn das Repository nicht vorhanden ist, dann erstellen Sie es.
  2. Prüfen Sie, ob der vollständige Pfad des Images, das Sie per Push übertragen, korrekt ist. Der Pfad muss den Hostnamen der Registry, Google Cloud die Projekt-ID, das Repository und das Image enthalten. Beispiel:
    us-west1-docker.pkg.dev/my-project/my-repo/my-image:v1
      

    Jedes Artifact Registry-Repository ist eine separate Ressource. Sie können also kein Image per Push an einen Pfad ohne Repository übertragen. For example, us-west1-docker.pkg.dev/my-project/my-image:v1 ist ein ungültiger Image-Pfad.

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

  3. Prüfen Sie, ob das Konto, mit dem das Image per Push übertragen wird, Berechtigungen zum Schreiben in das Repository hat. Wenn Sie die automatische Rollenzuweisung für Dienstkonten deaktiviert haben, müssen Sie den Laufzeitdienst konten Artifact Registry-Rollen zuweisen.
    • Für Compute Engine-, Cloud Run- und Google Kubernetes Engine-Dienstkonten müssen Sie dem Laufzeit dienstkonto die Rolle Artifact Registry-Autor (roles/artifactregistry.writer) zuweisen.
    • Für Ihr Cloud Build-Dienstkonto müssen Sie dem Dienstkonto, mit dem Builds ausgeführt werden, die Rolle Artifact Registry-Autor (roles/artifactregistry.writer) zuweisen.
  4. Wenn Artifact Registry die Meldung The repository has enabled tag immutability zurückgegeben hat, ist die Tag-Unveränderlichkeit für das Repository konfiguriert. Sie können kein Image mit einem Tag per Push übertragen, das bereits für eine andere Version desselben Images im Repository verwendet wird. Versuchen Sie, das Image noch einmal mit einem Tag per Push zu übertragen, das nicht von anderen gespeicherten Versionen des Images verwendet wird.

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

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

Meldungen „ImagePullBackOff“ und „ErrImagePull“

Meldungen mit ImagePullBackOff und ErrImagePull weisen darauf hin, dass ein Image nicht von GKE aus der Registry abgerufen werden kann.