Übersicht zu Container Registry

Container Registry ist eine private Container-Image-Registry, die in Google Cloud ausgeführt wird. Container Registry unterstützt die Image-Formate Docker Image Manifest V2 und OCI.

Dockerhub ist eine beliebte zentrale Registry zum Speichern öffentlicher Docker-Images. Wenn Sie Kontrolle über den Zugriff auf Ihre Images benötigen, müssen Sie eine private Registry wie Container Registry verwenden.

Sie können auf Container Registry über sichere HTTPS-Endpunkte zugreifen und Images aus einem beliebigen System, einer VM-Instanz oder Ihrer eigenen Hardware herunterladen, hochladen und verwalten. Außerdem können Sie Docker mit dem Befehlszeilentool Docker Credential Helper für die direkte Authentifizierung bei Container Registry konfigurieren.

Name der Registry

Die Registrys in Container Registry sind nach Host und Projekt-ID benannt. Zur Bearbeitung (wie Upload, Download, Löschen) geben Sie das Image im folgenden Format an:

HOSTNAME/PROJECT-ID/IMAGE:TAG

oder

HOSTNAME/PROJECT-ID/IMAGE@IMAGE-DIGEST

Dabei gilt:

  • HOSTNAME ist der Standort, an dem das Image gespeichert wird:

    • gcr.io hostet die Images derzeit in den USA, wobei sich der Standort in Zukunft ändern kann.
    • us.gcr.io hostet die Images ebenfalls in den USA, jedoch in einem von gcr.io getrennten Storage-Bucket.
    • eu.gcr.io hostet die Images in der Europäischen Union.
    • asia.gcr.io hostet die Images 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.

  • 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. Dieser kann vom lokalen Image-Namen abweichen. In der Google Cloud Console werden die Registrys des Projekts nach dem Image-Namen aufgelistet. Jedes Repository kann mehrere Images mit demselben Namen enthalten. Beispiel: mehrere Versionen des Images "quickstart-image".

  • Durch Hinzufügen von :TAG oder @IMAGE-DIGEST am Ende des Namens können Sie eine bestimmte Version des Images angeben, was jedoch optional ist. Wenn Sie weder ein Tag noch einen Digest angeben, sucht Container Registry nach dem Image mit dem Standard-Tag latest. Siehe Image-Versionen innerhalb einer Registry weiter unten.

In der Kurzanleitung lautet die Registry für das Image der Kurzanleitung beispielsweise gcr.io/PROJECT-ID. Für einen Up- oder Download des Images verwenden Sie folgendes Format:

gcr.io/PROJECT-ID/quickstart-image:tag1

Dabei ist PROJECT-ID Ihre Projekt-ID der Google Cloud Console.

Image-Versionen innerhalb einer Registry

Eine Registry kann viele Images enthalten und diese können unterschiedliche Versionen haben. Zum Identifizieren einer bestimmten Version des Images in einer Registry können Sie das Tag oder den Digest des Images angeben. In einer Registry kommt das Tag für ein Image immer nur einmal vor. Digests werden automatisch generiert, kommen pro Version eines Images immer nur einmal vor und haben die Form @IMAGE-DIGEST, wobei IMAGE-DIGEST der sha256-Hash-Wert des Image-Inhalts ist.

Um etwa in der Schnellstartanleitung eine bestimmte Image-Version zu identifizieren, gehen Sie so vor:

  • fügen Sie das Image-Tag hinzu:

    gcr.io/PROJECT-ID/quickstart-image:tag1
    
  • oder das Image-Digest:

    gcr.io/PROJECT-ID/quickstart-image@sha256:4d11e24ba8a615cc85a535daa17b47d3c0219f7eeb2b8208896704ad7f88ae2d
    

Dabei ist PROJECT-ID 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.

In der Console werden die Image-Tags unter Images in der Spalte Tags angezeigt. Klicken Sie auf eine Image-Version, um die Metadaten anzusehen, einschließlich des Image-Digests.

Weitere Informationen zur Bearbeitung von Tags finden Sie unter Images taggen.

Auf Domains beschränkte Projekte

Wenn Ihr Projekt auf Ihre Domain beschränkt ist, enthält die Projekt-ID den Namen der Domain, gefolgt von einem Doppelpunkt (:). Aufgrund der Art und Weise, wie Docker Doppelpunkte behandelt, müssen Sie den Doppelpunkt durch einen Schrägstrich ersetzen, wenn Sie einen Image-Digest in Container Registry angeben. Identifizieren Sie Images in diesen Projekttypen im folgenden Format:

HOSTNAME/[DOMAIN]/[PROJECT]/IMAGE

Das Projekt mit der ID example.com:my-project könnte beispielsweise folgendes Image haben:

gcr.io/example.com/my-project/image-name

Registry-Namen als URLs

Die URL https://HOSTNAME/PROJECT-ID/IMAGE ist eine URL für diese Registry in der Cloud Console. Diese Links können von jedem authentifizierten Nutzer aufgerufen werden, der über Zugriffsrechte für die Registry verfügt. Weiter oben finden Sie Informationen zum Aufbau des Registry-Namens.

Die folgenden URLs verweisen beispielsweise auf öffentliche Registries in der Cloud Console:

Container-Image-Formate

Container Registry unterstützt die Image-Formate Docker Image Manifest V2 und OCI.

Weitere Informationen finden Sie im Artikel über Container-Image-Formate.

Zugriffssteuerung

Container Registry speichert Tags und Ebenendateien für Container-Images in einem Cloud Storage-Bucket im selben Projekt wie die Registry. Der Zugriff auf den Bucket wird mithilfe der IAM-Einstellungen (Identity and Access Management) von Cloud Storage konfiguriert.

Projektinhaber und Bearbeiter sind standardmäßig zum Hoch- und Herunterladen von Images für den Cloud Registry-Bucket dieses Projekts berechtigt. Projektbetrachter haben nur die Berechtigung zum Herunterladen.

Weitere Informationen finden Sie unter Zugriffssteuerung konfigurieren.

Unter Hinweise zu veralteten Versionen für Container Registry finden Sie Informationen zu den Plänen, Image-Metadaten von Cloud Storage in eine leistungsstarke Back-End-Datenbank zu verschieben.

Authentifizierung

Bevor Sie Images hoch- oder herunterladen können, müssen Sie die Authentifizierung konfigurieren. Sie können Docker so konfigurieren, dass das gcloud-Befehlszeilentool zur Authentifizierung von Anfragen an Container Registry verwendet wird. Container Registry unterstützt auch erweiterte Authentifizierungsmethoden mit Zugriffstoken oder JSON-Schlüsseldateien.

Docker Credential Helper

Docker muss zum Hoch- und Herunterladen von Images Zugriff auf Container Registry haben. Mithilfe des Befehlszeilentools Docker Credential Helper können Sie Ihre Container Registry-Anmeldedaten für die Verwendung mit Docker konfigurieren.

Credential Helper ruft Ihre Container Registry-Anmeldedaten ab – entweder automatisch oder von einem mit dem Flag --token-source angegebenen Speicherort – und schreibt sie in die Konfigurationsdatei von Docker. Auf diese Weise können Sie das Docker-Befehlszeilentool docker verwenden, um direkt mit Container Registry zu interagieren.

Weitere Informationen finden Sie unter Erweiterte Authentifizierung.

Container Registry-Dienstkonto

Wenn Sie die Container Registry API aktivieren, fügt Container Registry Ihrem Projekt ein Dienstkonto hinzu. Dieses Dienstkonto hat folgenden Namen:

service-[PROJECT_NUMBER]@containerregistry.iam.gserviceaccount.com

Das Container Registry-Dienstkonto dient ausschließlich dem Zweck, dass Container Registry Ihr Projekt bearbeiten kann. Google ist zwar der Inhaber dieses Kontos, das Konto ist aber projektspezifisch und wird in den Abschnitten "Dienstkonten" und "IAM" der Cloud Console aufgeführt.

Wenn Sie dieses Dienstkonto löschen oder die damit verbundenen Berechtigungen ändern, werden einige Funktionen von Container Registry nicht mehr richtig funktionieren. Löschen Sie das Konto nicht und ändern Sie keine Rollen.

Cache zum Abrufen

Die Registry mirror.gcr.io speichert häufig abgerufene öffentliche Images aus den offiziellen Docker Hub-Repositories im Cache.

Der Spiegel kann das Herunterladen aus Docker Hub-Repositories beschleunigen. Wenn Sie mirror.gcr.io verwenden, versucht Ihr Client zuerst, offizielle Docker Hub-Images aus der Container Registry-Spiegelung herunterzuladen.

Weitere Informationen finden Sie unter Im Cache gespeicherte Docker Hub-Images abrufen.

Mitteilungen

Sie können Pub/Sub verwenden, um Benachrichtigungen über Änderungen an Ihren Container-Images zu erhalten.

Weitere Informationen finden Sie unter Pub/Sub-Benachrichtigungen konfigurieren.

Container Registry mit Google Cloud verwenden

Compute Engine-Instanzen und Google Kubernetes Engine-Cluster können Container Registry-Images basierend auf Cloud Storage-Bereichen auf den Instanzen übertragen und abrufen. Weitere Informationen finden Sie unter Container Registry mit Google Cloud verwenden.

In der Container Registry gespeicherte Images können über die flexible App Engine-Umgebung bereitgestellt werden.

Einbindung von Continuous-Delivery-Tools

Container Registry funktioniert mit mehreren beliebten Continuous Delivery-Systemen.

Container Registry mit Drittanbieterlösungen verwenden

Sie können für die Entwicklung Ihrer Anwendungen die Clusterverwaltung durch Dritte, Continuous Integration oder andere Lösungen außerhalb von Google Cloud verwenden. Container Registry kann in diese externen Dienste integriert werden.

Diese Lösungen bieten möglicherweise keinen Zugriff auf das gcloud-Befehlszeilentool für die Authentifizierung. In solchen Fällen können Sie sich mit docker login direkt bei Container Registry authentifizieren. Weitere Informationen finden Sie unter Erweiterte Authentifizierung.

Eine Liste der Drittanbieterlösungen, die in Container Registry eingebunden werden können, finden Sie unter Integration von Continuous Delivery-Tools.