Artifact Registry ist der empfohlene Dienst zur Verwaltung von Container-Images. Container Registry wird weiterhin unterstützt, es werden jedoch nur wichtige Sicherheitsupdates bereitgestellt. Umstellung auf Artifact Registry

Images hoch- und herunterladen

Das Hoch- und Herunterladen von Images und das Herunterladen von Images sind zwei der gängigsten Aufgaben in Container Registry. In diesem Dokument geht es um das Übertragen und Abrufen von Images per Docker.

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

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 im 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 Bilder in Rechenzentren in den USA
asia.gcr.io Speichert Bilder in Rechenzentren in Asien
eu.gcr.io Speichert Bilder in Rechenzentren in Mitgliedsstaaten der Europäischen Union
us.gcr.io Speichert Bilder in Rechenzentren in den USA

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

Sobald ein Registry-Host in Ihrem Projekt vorhanden ist, können Sie Berechtigungen für den Storage-Bucket konfigurieren, um den Zugriff auf die 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 Anfangs-Image an den Host. Beispiele:

    • 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 per Docker in ein anderes Drittanbietertool in die Container Registry übertragen können, müssen Sie es zuerst mit dem Namen der Registry taggen.

Die folgenden Faktoren können sich auf Uploads für große Bilder 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 die Uploadzeit voraussichtlich 60 Minuten überschreitet, solltest du eine andere Authentifizierungsmethode verwenden.
Bildgröße
Container Registry verwendet für den von einer Registry verwendeten Speicher Cloud Storage. Für jede Registry gelten Kontingente und Limits für Cloud Storage, einschließlich der maximalen Größe von 5 TB für ein Objekt im Speicher.
Container Registry unterstützt keine von Docker aufgeteilten Uploads. Einige Tools unterstützen das Hochladen großer Bilder entweder mit aufgeteilten Uploads oder mit einem einzelnen monolithischen Upload. Sie müssen monolithische Uploads verwenden, um Images in Container Registry hochzuladen.

Erforderliche Berechtigungen

Zum Hochladen eines Images benötigen Sie eine der folgenden Cloud Storage-Rollen oder eine Rolle mit denselben Berechtigungen:

Das erste Image per Push in eine Registry in Ihrem Projekt übertragen

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

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

Images in eine vorhandene Registry in Ihrem Projekt per Push übertragen

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

Diese Rolle ist berechtigt, Images für vorhandene Registry-Hosts in Ihrem Projekt hoch- und herunterzuladen. Wenn Ihr Projekt beispielsweise nur die Registry gcr.io enthält, kann ein Nutzer mit der Rolle "Autor von Legacy-Storage-Buckets" Images an gcr.io, aber nicht an asia.gcr.io übertragen.

Informationen zum Gewähren 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 in Rechenzentren in den USA, in einem separaten Storage-Bucket von Images, die von gcr.io gehostet werden.
      • 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. Übertragen Sie das getaggte Image mithilfe des folgenden Befehls in Container Registry:

    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 übertragene 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 aufzurufen:

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