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 hier: finden Sie in der IAM-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 von Legacy-Storage-Buckets (roles/storage.legacyBucketWriter) für 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 Sie die Authentifizierung für Container Registry konfiguriert haben.
  2. Bestimmen Sie den Namen für das Image in Container Registry:

    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 Ziel-Image-Namen aus. Dieser darf sich vom Image-Namen unterscheiden. auf Ihrem lokalen Computer. Das lokale Image kann beispielsweise web-image, Sie möchten ihn aber in Container Registry als web-site

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

      HOSTNAME/PROJECT-ID/TARGET-IMAGE
      

      Dazu ein Beispiel:

      • Hostname: gcr.io
      • Google Cloud-Projekt: my-project
      • Name des Zielbilds: web-site

      Wenn Sie den Hostnamen, das Projekt und den Namen des Ziel-Images kombinieren, erhalten Sie den vollständigen Imagepfad, der für das Tagging verwendet werden kann:

      gcr.io/my-project/web-site

      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 Namen aus dem vorherigen Schritt. Wenn Sie ein Label diese Version des Images mit einem Tag enthält, fügen Sie den Tag-Namen ein.

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

    Ersetzen Sie Folgendes:

    • SOURCE_IMAGE ist der Name oder die Image-ID des lokalen Images.
    • HOSTNAME ist der Registry-Host, den Sie in Schritt 2 ausgewählt haben.
    • PROJECT ist die Google Cloud-Projekt-ID.
    • TARGET-IMAGE ist der Name des Images, wenn es in gespeichert wird. Container Registry.
    • TAG ist das Tag, das Sie mit dieser Image-Version verknüpfen möchten.

    Mit diesem Befehl wird beispielsweise das lokale Image web-image in Container Registry mit dem Tag v1.5 als gcr.io/my-project/web-site getaggt.

    docker tag web-image gcr.io/my-project/web-site:v1.5
    

    Wenn Sie kein Tag angeben, fügt Docker das Standard-Tag latest hinzu. Da latest ein Standard-Tag ist, steht es für die Image-Version, die zuletzt mit dem latest-Tag getaggt wurde, nicht unbedingt für die neueste Version eines Images.

Docker taggt Ihr Image mit dem Imagenamen und dem Tag, das Sie im Befehl angegeben haben.

Getaggtes Image in Container Registry hochladen

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

  2. Übertragen Sie das getaggte Image per Push in Container Registry:

    Führen Sie den folgenden Befehl aus, um ein Image mit einem bestimmten Tag per Push zu übertragen:

    docker push HOSTNAME/PROJECT-ID/IMAGE:TAG
    

    Wenn Sie :TAG weglassen, sendet Docker die Version des mit latest getaggten Images.

    Mit diesem Befehl wird beispielsweise das Bild gcr.io/my-project/web-site mit dem Tag v1.5 hochgeladen:

    docker push gcr.io/my-project/web-site:v1.5
    

Wenn Sie ein Image in einen Registry-Host hochladen, der noch nicht in Ihrem Projekt vorhanden ist, erstellt Container Registry einen Storage-Bucket für den Registry-Host.

So rufen Sie das hochgeladene Image auf:

  • Rufen Sie die Google 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 Google Cloud Console Projekt-ID. 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. In Google Cloud Console: Klicken Sie auf die gewünschte um die Metadaten zu sehen. 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