Im Rahmen der Umstellung von Container Registry auf Artifact Registry können Sie Container Registry-Images kopieren, die Sie in Artifact Registry behalten möchten.
Hinweis
Sie benötigen Folgendes:
- Sie haben in Artifact Registry ein vorhandenes Docker-Repository für Ihre Images erstellt.
- Konfigurierte Berechtigungen für den Zugriff auf das Repository.
- Konfigurierte Authentifizierung beim Repository.
Weitere Informationen zu diesen Aufgaben und zu den gleichen Aufgaben in Container Registry finden Sie im Einrichtungsleitfaden für Container Registry-Nutzer.
Übersicht
Es gibt mehrere Möglichkeiten, Images aus Container Registry zu kopieren, die Sie in Artifact Registry speichern und wiederverwenden möchten. Es empfiehlt sich, Dateien mit dem gcrane-Tool zu kopieren, da es mit einem einzigen Befehl das Kopieren von Images unterstützt.
Sie können die Kosten senken, indem Sie alte, nicht getaggte Images entfernen, bevor Sie Container in Artifact Registry kopieren.
Nicht getaggte Images aus Container Registry entfernen
Durch die Entfernung nicht getaggter Images werden die Kosten für das Speichern in der Container-Registry sowie die Kosten für das Kopieren von Images aus Container Registry in Artifakt Registry gesenkt.
Es gibt verschiedene Tools, um nicht mehr benötigte Images zu identifizieren und zu automatisieren. Mit dem Tool gcr-cleaner können Sie beispielsweise alte Images anhand verschiedener Kriterien suchen und entfernen.
Das gcr-cleaner
-Tool ist kein offizielles Google-Produkt.
Weitere Informationen zum Einrichten und Verwenden des Tools finden Sie in der Dokumentation zu gcr-cleaner.
Images mit gcrane kopieren
Zum Kopieren von Images in Artifact Registry empfehlen wir das gcrane-Tool.
gcrane
bietet mehrere Vorteile:
- Kopieren Sie Imagesätze mit einem einzigen Befehl, einschließlich aller Images unter einem bestimmten Pfad oder alle Images, die auf einem multiregionalen Host in Ihrem Projekt gespeichert sind.
- Bereits hochgeladene Imageebenen werden übersprungen.
Sie können gcrane
aus verschiedenen Umgebungen ausführen:
Compute Engine-Instanz: Verwenden Sie diese Option, wenn eine größere Anzahl von Containern kopiert werden soll.
Kosten: Instanzlaufzeit für die Compute Engine-VM. Befindet sich die VM-Instanz an einem anderen Standort als der Container Registry-Storage-Bucket, fallen für die zu kopierenden Images Gebühren für ausgehenden Netzwerktraffic an.
Cloud Shell: Option zum Kopieren kleiner Datasets mit bis zu 40 GB oder weniger. Da
gcrane
das Hochladen von Imageebenen startet, die bereits hochgeladen wurden, gilt diese Beschränkung für neue Daten, die Sie kopieren.Wenn Sie größere Repositories kopieren, kann Cloud Shell die Verbindung nach Ablauf des Zeitlimits der Anfrage von 10 Minuten trennen.
Kosten: Wenn sich die Cloud Shell-Instanz an einem anderen Standort als der Container Registry-Storage-Bucket befindet, fallen für die Images, die Sie kopieren, Gebühren für ausgehenden Netzwerktraffic an. Sie können den Standort einer Cloud Shell-Sitzung nicht auswählen. Führen Sie den folgenden Befehl aus, um den Speicherort der aktuellen Sitzung zu ermitteln:
curl metadata/computeMetadata/v1/instance/zone
Lokaler Computer: Wenn Sie die anderen Optionen nicht verwenden können, können Sie
gcrane
auf einem lokalen Computer ausführen.Kosten: Für das Kopieren von Images fallen Gebühren für ausgehenden Netzwerktraffic an.
Compute Engine einrichten
So kopieren Sie Images mit gcrane
aus einer Compute Engine-VM-Instanz:
- Erstellen Sie eine VM-Instanz in demselben Projekt, in dem Container Registry und Artifact Registry aktiviert sind. Erstellen Sie die Instanz am selben Speicherort wie der Container Registry-Host, um die Kosten zu minimieren.
Standardmäßig ist die VM-Instanz dem Standarddienstkonto zugeordnet und hat Berechtigungen zum Abrufen von Images. Sie müssen den Zugriffsbereich ändern, damit die VM-Instanz Images übertragen kann.
Stoppen Sie die VM-Instanz. Siehe Instanz beenden.
Ändern Sie den Zugriffsbereich mit dem folgenden Befehl:
gcloud compute instances set-service-account INSTANCE --scopes=storage-rw
Ersetzen Sie INSTANCE durch den Namen der VM-Instanz.
Starten Sie die VM-Instanz neu. Siehe Beendete Instanz starten.
Führen Sie den folgenden Befehl aus, um
gcrane
herunterzuladen.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Führen Sie die folgenden Befehle aus, um den Befehl
gcrane
ausführbar zu machen:tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/ ```
Führen Sie den Befehl
gcrane --help
aus, um die Installation zu prüfen.
Jetzt können Sie Images kopieren. So fahren Sie fort:
Cloud Shell einrichten
Öffnen Sie ein Cloud Shell-Fenster.
Legen Sie das Standardprojekt fest. Ersetzen Sie PROJECT durch die ID des Projekts, in dem Container Registry und Artifact Registry installiert sind.
gcloud config set project PROJECT.
Führen Sie den folgenden Befehl aus, um
gcrane
herunterzuladen.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Führen Sie die folgenden Befehle aus, um den Befehl
gcrane
ausführbar zu machen:tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Führen Sie den Befehl
gcrane --help
aus, um die Installation zu prüfen.
Jetzt können Sie Images kopieren. So fahren Sie fort:
Lokalen Computer einrichten
Achten Sie darauf, dass Sie sowohl bei Container Registry als auch in Artifact Registry authentifiziert sind. Wenn Sie für jeden Dienst verschiedene Konten verwenden, müssen Sie darauf achten, dass Sie für beide Dienste authentifiziert sind.
Laden Sie
gcrane
aus dem GitHub-Repository herunter. Sie können den folgenden Befehl verwenden, um das Tool aus der Befehlszeile herunterzuladen.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Führen Sie die folgenden Befehle aus, um den Befehl
gcrane
ausführbar zu machen: Dabei wird davon ausgegangen, dass die heruntergeladene Datei den Namengo-containerregistry.tar.gz
hat.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Führen Sie den Befehl
gcrane --help
aus, um die Installation zu prüfen.
Jetzt können Sie Images kopieren. So fahren Sie fort:
Images identifizieren, die kopiert werden sollen
Nachdem Sie gcrane installiert haben, können Sie die vorhandenen Images in Container Registry auflisten, um die Images zu finden, die Sie kopieren möchten.
Führen Sie den folgenden Befehl aus, um vorhandene Images aufzulisten:
gcrane ls LOCATION.gcr.io/PROJECT
Führen Sie den folgenden Befehl aus, um die Tags eines Images aufzulisten:
gcrane ls LOCATION.gcr.io/PROJECT/IMAGE
Führen Sie den folgenden Befehl aus, um Images rekursiv unter einem bestimmten Pfad aufzulisten:
gcrane ls -r LOCATION.gcr.io/PROJECT/PATH
Führen Sie für jeden Befehl folgende Schritte aus:
- Ersetzen Sie LOCATION durch die Multi-Region der Registry:
asia
,eu
oderus
. - Ersetzen Sie PROJECT durch die Projekt-ID.
Informationen zu den Befehlen zum Kopieren von Images finden Sie unter Images kopieren.
Images kopieren
Sie können einzelne Images aus Container Registry, alle Images unter einem angegebenen Pfad an einem Standort oder alle Images an einem Standort kopieren.
Einzelnes Image kopieren
Führen Sie den folgenden Befehl aus, um ein einzelnes getaggtes Image zu kopieren:
gcrane cp GCR-LOCATION.gcr.io/PROJECT/IMAGE \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/IMAGE
Dabei gilt:
- GCR-LOCATION ist der multiregionale Host des Container Registry-Hosts:
asia
,eu
oderus
. - AR-LOCATION ist die Region oder Multiregion des Repositorys.
- PROJECT ist die Projekt-ID.
- REPOSITORY ist der Name des Artifact Registry-Repositorys.
- GCR-IMAGE ist das Image, das Sie aus Container Registry kopieren möchten.
- AR-IMAGE ist der Name des Images in Artifact Registry.
Betrachten Sie beispielsweise das folgende Quell- und Ziel-Image:
- Container Registry-Image:
eu.gcr.io/my-project/my-image:tag1
- Artifact Registry-Image:
europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Führen Sie den folgenden Befehl aus, um das Image zu kopieren:
gcrane cp eu.gcr.io/my-project/my-image:tag1 \
europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Alle Images unter einem Pfad kopieren
Führen Sie den folgenden Befehl aus, um Images rekursiv unter einem bestimmten Pfad in Container Registry zu kopieren:
gcrane cp -r GCR-LOCATION.gcr.io/PROJECT/GCR-PATH \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/AR-PATH
Dabei gilt:
- GCR-LOCATION ist der multiregionale Host des Container Registry-Hosts:
asia
,eu
oderus
. - AR-LOCATION ist die Region oder Multiregion des Repositorys.
- PROJECT ist die Projekt-ID.
- REPOSITORY ist der Name des Artifact Registry-Repositorys.
- GCR-PATH ist der Pfad der Dateien, die Sie kopieren möchten.
- AR-PATH ist der Pfad für die Images in Ihrem Artifact Registry-Repository.
Betrachten Sie zum Beispiel die folgenden Quell- und Zielpfade:
- Container Registry-Pfad:
eu.gcr.io/my-project/test-images/testing
- Artifact Registry-Pfad:
europe-west1-docker.pkg.dev/my-project/my-repo/test-images/testing
Mit dem folgenden Befehl werden alle Images unter test-images/testing
in das Repository my-repo
kopiert:
gcrane cp -r eu.gcr.io/my-project/test-images/testing \
europe-west1-docker.pkg.dev/my-project/my-repo/test-images/testing
Alle Images aus einem Container Registry-Speicherort kopieren
Führen Sie den folgenden Befehl aus, um alle Images aus einer Region mit Container Registry zu kopieren:
gcrane cp -r GCR-LOCATION.gcr.io/PROJECT \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY
Dabei gilt:
- GCR-LOCATION ist der multiregionale Host des Container Registry-Hosts:
asia
,eu
oderus
. - AR-LOCATION ist die Region oder Multiregion des Repositorys.
- PROJECT ist die Projekt-ID.
- REPOSITORY ist der Name des Artifact Registry-Repositorys.
Wenn Sie Images für mehr als einen Container Registry-Speicherort in Ihrem Projekt kopieren möchten, führen Sie den Befehl für jeden Host einmal aus.
Betrachten Sie beispielsweise die folgende Quell-Registry und das Ziel-Artifact Registry-Repository. In diesem Beispiel befinden sich Container Registry und Artifact Registry in verschiedenen Projekten.
- Container Registry-Host:
eu.gcr.io/my-project
- Artifact Registry-Image:
europe-west1-docker.pkg.dev/new-project/my-repo
Mit dem folgenden Befehl werden alle Images aus der Multiregion eu
im Projekt my-project
in das Repository my-repo
des Projekts new-project
kopiert.
gcrane cp -r eu.gcr.io/my-project \
europe-west1-docker.pkg.dev/new-project/my-repo
Images mit Docker kopieren
Im Gegensatz zu den Kopiermethoden gcrane und gcloud besteht dieser Ansatz aus zwei Schritten.
- Image aus Container Registry herunterladen
- Image per Push in Ihr Artifact Registry-Repository übertragen
Kosten: Wenn Sie ein Image herunterladen, wird der ausgehende Netzwerktraffic in Rechnung gestellt. Die spezifischen Preise hängen vom Ziel des Pull-Befehls ab. Wenn Sie beispielsweise ein Image aus einer Cloud Shell-Sitzung abrufen, gelten die Preise für ausgehenden Netzwerktraffic innerhalb von Google Cloud. Wenn Sie ein Image auf eine Maschine außerhalb Google Cloud laden, gelten die Preise für den allgemeinen ausgehenden Netzwerktraffic.
Die Docker-Befehle, die Sie zum Taggen, Übertragen und Abrufen von Images in Artifact Registry verwenden, ähneln denen, die Sie in Container Registry verwenden. Es gibt zwei Hauptunterschiede:
- Der Hostname für die Artifact Registry-Docker-Repositories enthält ein Standortpräfix, gefolgt von
-docker.pkg.dev
. Beispiele sindaustralia-southeast1-docker.pkg.dev
,europe-north1-docker.pkg.dev
undeurope-docker.pkg.dev
. - Da Artifact Registry mehrere Docker-Repositories in einem einzelnen Projekt unterstützt, müssen Sie den Repository-Namen in Befehlen angeben.
Laden Sie ein Image aus Container Registry herunter und übertragen Sie es per Push in Ihr Artifact Registry-Repository, um ein Image in Docker zu kopieren.
Beispiel: Sie sehen ein Container Registry-Image am multiregionalen Standort eu
und in ein Artifact Registry-Repository in der Region europe-west1
kopieren.
- Container Registry-Image:
eu.gcr.io/my-project/my-image:tag1
- Artifact Registry-Image:
europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Der folgende Befehl ruft das Image aus Container Registry ab.
docker pull eu.gcr.io/my-project/my-image:tag1
Mit dem folgenden Befehl wird das Image per Push in das Artifact Registry-Repository namens my-repo
übertragen.
docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image
Sie können Images auch in ein Artifact Registry-Repository übertragen, das Sie in einem anderen Projekt einrichten. In diesem Beispiel wird dasselbe Quell-Image per Push in das Repository my-repo
im Projekt new-project
übertragen.
docker push europe-north1-docker.pkg.dev/new-project/my-repo/my-image
Weitere Informationen zum Hoch- und Herunterladen von Images in Artifact Registry finden Sie unter Images hoch- und herunterladen.
Images mit gcloud kopieren
Verwenden Sie den Befehl gcloud container images add-tag
, um ein Image aus Container Registry in Ihr Artifact Registry-Repository zu kopieren.
Kosten: Wenn sich Container Registry an einem anderen Ort als Ihr Artifact Registry-Repository befindet, fallen für die kopierten Images Gebühren für ausgehenden Netzwerktraffic an. Wenn sich beide Dienste am selben Standort befinden, ist der ausgehende Netzwerktraffic kostenlos.
Führen Sie den folgenden Befehl aus, um ein Image von Container Registry in Artifact Registry zu kopieren:
gcloud container images add-tag GCR-IMAGE AR-IMAGE
Dabei gilt:
- GCR-IMAGE ist der vollständige Pfad zum Container Registry-Image.
- AR-IMAGE ist der vollständige Pfad für das Image im Artifact Registry-Repository.
Sehen Sie sich zum Beispiel die folgenden Quell- und Ziel-Images an:
- Container Registry-Image:
eu.gcr.io/my-project/my-image:tag1
- Artifact Registry-Image:
europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Mit diesem Befehl wird das Image aus Container Registry am multiregionalen Standort eu
in das Repository my-repo
in der Region europe-west1
kopiert.
gcloud container images add-tag eu.gcr.io/my-project/my-image:tag1 \
europe-west1-docker.pkg.dev/my-project/my-repo/my-image:tag1
Sie können auch Images in ein Artifact Registry-Repository kopieren, das Sie in einem anderen Projekt einrichten. In diesem Beispiel wird dasselbe Quell-Image in das Repository my-repo
des Projekts new-project
kopiert.
gcloud container images add-tag eu.gcr.io/my-project/my-image:tag1 \
europe-west1-docker.pkg.dev/new-project/my-repo/my-image:tag1
Nächste Schritte
- Informieren Sie sich über die anderen Schritte für die Umstellung auf Artifact Registry. Informationen zum Hochladen, Herunterladen und Bereitstellen von Images finden Sie im Vergleich zu Container Registry.
- Docker-Kurzanleitung ausführen