Artifact Registry ist der empfohlene Dienst zum Verwalten von Container-Images. Container Registry wird weiterhin unterstützt, erhält aber nur kritische Sicherheitsupdates. Informationen zur Umstellung auf Artifact Registry.

Images hoch- und herunterladen

Das Pushing (Hochladen) und Pulling (Herunterladen) von Images sind zwei der gängigsten Aufgaben in Container Registry. In diesem Dokument geht es um das Hoch- und Herunterladen von Images mit Docker.

Wenn Sie Cloud Build verwenden, finden Sie in der Cloud Build-Dokumentation Informationen zum Erstellen und Übertragen von Containern in Container Registry.

Unter Images verwalten finden Sie Anweisungen zum Auflisten, Taggen und Löschen von Images.

Hinweis

Folgende Voraussetzungen müssen erfüllt sein:

  1. Container Registry ist in Ihrem Projekt aktiviert.

  2. Sie haben Docker installiert und konfiguriert.

Registry hinzufügen

Sie können einem Projekt die folgenden Container Registry-Registries hinzufügen:

Hostname Storage-Speicherort
gcr.io Speichert Images in Rechenzentren in den USA
asia.gcr.io Speichert Images in Rechenzentren in Asien
eu.gcr.io Speichert Images in Rechenzentren in Mitgliedsstaaten der Europäischen Union
us.gcr.io Speichert Images in Rechenzentren in den USA

Das erste Image-Übertragung an einen Hostnamen löst die Erstellung der Registry in einem Projekt und dem entsprechenden Cloud Storage-Storage-Bucket aus. Dieser erste Push erfordert projektweite Berechtigungen zum Erstellen von Storage-Buckets.

Wenn in Ihrem Projekt ein Registry-Host vorhanden ist, können Sie Berechtigungen für den Storage-Bucket konfigurieren, um den Zugriff auf Images in der Registry zu steuern.

So fügen Sie eine Registry hinzu und konfigurieren Berechtigungen:

  1. Prüfen Sie, ob Sie die erforderlichen Berechtigungen haben. Sie benötigen die Rolle Storage-Administrator (roles/storage.admin), eine benutzerdefinierte Rolle oder eine vordefinierte Rolle mit denselben Berechtigungen.

    Eine Anleitung zum Zuweisen der Rolle "Storage-Administrator" auf Projektebene finden Sie in der Cloud Storage-Dokumentation.

  2. Übertragen Sie ein anfängliches Image an den Host. Zum Beispiel die folgenden Befehle:

    • Image busybox aus Docker Hub abrufen
    • Taggen Sie das Image mit seinem Zielpfad in Container Registry, einschließlich des Registry-Hosts gcr.io und der Projekt-ID.my-project
    • Image in die Registry hochladen
    docker pull busybox
    docker tag busybox gcr.io/my-project/busybox
    docker push gcr.io/my-project/busybox
    

Container Registry fügt Ihrem Projekt die Registry hinzu, erstellt einen Storage-Bucket für die Registry und speichert das Image.

Sie können jetzt die Zugriffssteuerung für den Registry-Storage-Bucket konfigurieren, um anderen Nutzern Zugriff auf die Registry zu gewähren.

Image in eine Registry hochladen

Bevor Sie ein lokales Image mit Docker oder einem anderen Drittanbietertool in Container Registry hochladen können, müssen Sie es zuerst mit dem Registry-Namen taggen.

Die folgenden Faktoren können sich auf Uploads für große Images auswirken:

Upload-Zeitpunkt
Für jede an Container Registry gesendete Anfrage gilt ein Zeitlimit von 2 Stunden. Wenn Sie sich mit einem Zugriffstoken bei Container Registry authentifizieren, läuft das Token nach 60 Minuten ab. Wenn Sie einen Upload von mehr als 60 Minuten erwarten, verwenden Sie eine andere Authentifizierungsmethode.
Bildgröße
Container Registry verwendet für den von einer Registry verwendeten Speicher Cloud Storage. Für jede Registry gelten Cloud Storage-Kontingente und -Limits, einschließlich der maximalen Größe von 5 TB für ein Objekt im Speicher.
Hinweis: Container Registry unterstützt keine von Docker aufgeteilten Uploads. Einige Tools unterstützen das Hochladen großer Images mit aufgeteilten Uploads oder mit einem einzelnen monolithischen Upload. Sie müssen monolithische Uploads verwenden, um Images in Container Registry zu übertragen.

Erforderliche Berechtigungen

Zum Hochladen eines Images ist eine der folgenden Cloud Storage-Rollen oder eine Rolle mit denselben Berechtigungen erforderlich:

Das erste Image in eine Registry Ihres Projekts hochladen

Rolle: Storage-Administrator (roles/storage.admin) auf Google Cloud-Projektebene. Die vordefinierte Rolle "Inhaber" enthält diese Berechtigungen.

Wenn Sie zum ersten Mal ein Image an einen Registry-Host in Ihrem Projekt übertragen (z. B. gcr.io), erstellt Container Registry einen Storage-Bucket für die Registry. Die Rolle "Storage-Administrator" hat die erforderlichen Berechtigungen zum Erstellen des Storage-Buckets.

Images in eine vorhandene Registry in Ihrem Projekt übertragen

Rolle: Autor alter Storage-Buckets (roles/storage.objectAdmin) im Registry-Storage-Bucket.

Diese Rolle hat Berechtigungen zum Hoch- und Herunterladen von Images für vorhandene Registry-Hosts in Ihrem Projekt. Wenn Ihr Projekt beispielsweise nur die Registry gcr.io enthält, kann ein Nutzer mit der Rolle "Storage Legacy Bucket Writer" Images weiterhin an gcr.io, aber nicht an asia.gcr.io übertragen.

Informationen zum Zuweisen von Berechtigungen für eine Registry finden Sie unter Zugriffssteuerung konfigurieren.

Lokales Image mit dem Registry-Namen taggen

So taggen Sie ein Image:

  1. Prüfen Sie, ob die Authentifizierung für Container Registry konfiguriert ist.
  2. Ermitteln Sie den Registry-Namen:

    1. Wählen Sie einen Hostnamen aus, der den Standort für das Image angibt.

      • gcr.io hostet Images in Rechenzentren in den USA, wobei sich der Standort in Zukunft ändern kann.
      • us.gcr.io hostet Images ebenfalls in Rechenzentren in den USA, jedoch in einem von gcr.io getrennten Storage-Bucket.
      • eu.gcr.io hostet Images in der Europäischen Union.
      • asia.gcr.io hostet Images in Rechenzentren in Asien.

      Diese Standorte entsprechen den Multiregionen für Storage-Buckets von Cloud Storage. Wenn Sie ein Image in eine Registry mit einem neuen Hostnamen hochladen, erstellt Container Registry einen Storage-Bucket in der angegebenen Multiregion. Dieser Bucket wird als Speicher für die Registry verwendet. Innerhalb eines Projekts teilen sich alle Registrys mit demselben Hostnamen einen Storage-Bucket.

      In der Konsole wird der Hostname der Images unter Standort aufgeführt.

    2. Wählen Sie einen Image-Namen aus. Dieser kann sich vom Image-Namen auf Ihrem lokalen Computer unterscheiden.

    3. Kombinieren Sie den Hostnamen, Ihre Projekt-ID der Google Cloud Console und den Image-Namen:

      HOSTNAME/PROJECT-ID/IMAGE
      

      Wenn die Projekt-ID einen Doppelpunkt (:) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.

  3. Taggen Sie das lokale Image mit dem Registry-Namen. Führen Sie dazu folgenden Befehl aus:

    docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/IMAGE
    

    Dabei ist SOURCE_IMAGE der Name des lokalen Images bzw. die Image-ID.

    Dieser Befehl gibt dem Image den Registry-Namen und wendet das Tag latest an. Wenn Sie ein anderes Tag anwenden möchten, verwenden Sie folgenden Befehl:

    docker tag SOURCE_IMAGE HOSTNAME/PROJECT-ID/IMAGE:TAG
    

Getaggtes Image in Container Registry hochladen

  1. Prüfen Sie, ob die Authentifizierung für Container Registry konfiguriert ist.

  2. Laden Sie das getaggte Image mit folgendem Befehl in Container Registry hoch:

    docker push HOSTNAME/PROJECT-ID/IMAGE
    

    Mit diesem Befehl wird das Image mit dem Tag latest hochgeladen. Wenn Sie ein Image mit einem anderen Tag hochladen möchten, verwenden Sie folgenden Befehl:

    docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
    

    Wenn Sie ein Image in eine Registry hochladen, die noch nicht in Ihrem Projekt vorhanden ist, erstellt Container Registry einen Storage-Bucket.

So rufen Sie das hochgeladene Image auf:

  • Rufen Sie die Cloud Console auf, um die Registry und das Image anzusehen.

  • Führen Sie gcloud container images list-tags aus, um das Image-Tag und den automatisch generierten Digest anzusehen:

    gcloud container images list-tags HOSTNAME/PROJECT-ID/IMAGE
    

    Die Befehlsausgabe sieht in etwa so aus:

    DIGEST        TAGS        TIMESTAMP
    44bde...      test        2017-..-..
    

Images aus einer Registry herunterladen

Zum Abrufen eines Images ist die Storage-Objekt-Betrachter für den Registry-Storage-Bucket oder eine Rolle mit denselben Berechtigungen erforderlich.

Verwenden Sie folgenden Befehl, um Images aus Container Registry herunterzuladen:

docker pull HOSTNAME/PROJECT-ID/IMAGE:TAG

oder

docker pull HOSTNAME/PROJECT-ID/IMAGE@IMAGE_DIGEST

Dabei gilt:

  • HOSTNAME ist in der Konsole unter Standort aufgeführt. Dies kann gcr.io, us.gcr.io, eu.gcr.io oder asia.gcr.io sein.
  • PROJECT-ID ist Ihre Projekt-ID der Google Cloud Console. Wenn die Projekt-ID einen Doppelpunkt (:) enthält, finden Sie weitere Informationen unter Auf Domains beschränkte Projekte.
  • IMAGE ist der Image-Name in Container Registry.
  • TAG ist das auf das Image angewendete Tag. In einer Registry gilt jedes Tag für jeweils ein Image.
  • IMAGE_DIGEST ist der sha256-Hash-Wert des Image-Inhalts. Klicken Sie in der Cloud Console auf das jeweilige Image, um dessen Metadaten aufzurufen. Der Digest wird unter Image-Digest aufgeführt.

So rufen Sie den Pull-Befehl für ein bestimmtes Image ab:

  1. Klicken Sie auf den Namen eines Images, um zur jeweiligen Registry zu gelangen.

  2. Klicken Sie in der Registry auf das Kästchen neben der Version des Images, die Sie herunterladen möchten.

  3. Klicken Sie oben auf der Seite auf PULL-BEFEHL ANZEIGEN.

  4. Kopieren Sie den Pull-Befehl. Er identifiziert das Image entweder mit dem Tag oder dem Digest.

Weitere Informationen