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:
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:
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.
Ü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
- Image
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 angcr.io
, aber nicht anasia.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:
- Prüfen Sie, ob Sie die Authentifizierung für Container Registry konfiguriert haben.
Bestimmen Sie den Namen für das Image in Container Registry:
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 vongcr.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.
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 alsweb-site
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.- Hostname:
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 Tagv1.5
alsgcr.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. Dalatest
ein Standard-Tag ist, steht es für die Image-Version, die zuletzt mit demlatest
-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
Prüfen Sie, ob Sie die Authentifizierung für Container Registry konfiguriert haben.
Ü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 mitlatest
getaggten Images.Mit diesem Befehl wird beispielsweise das Bild
gcr.io/my-project/web-site
mit dem Tagv1.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
oderasia.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:
Klicken Sie auf den Namen eines Images, um zur jeweiligen Registry zu gelangen.
Klicken Sie in der Registry auf das Kästchen neben der Version des Images, die Sie herunterladen möchten.
Klicken Sie oben auf der Seite auf PULL-BEFEHL ANZEIGEN.
Kopieren Sie den Pull-Befehl. Er identifiziert das Image entweder mit dem Tag oder dem Digest.
Weitere Informationen
- Mehr über das Verwalten von Images, einschließlich Hinzufügen oder Entfernen von Tags und Löschen von Images erfahren
- Mehr über die Konfiguration der Zugriffssteuerung erfahren
- Mehr über die Komponenten und Funktionen von Container Registry erfahren
- Mehr über Container in Compute Engine erfahren, wenn Sie Container in Compute Engine ausführen möchten