Mit dem Tool gcrane können Sie Images zwischen Docker-Repositories in Artifact Registry kopieren.
Hinweis
Prüfen Sie, ob die folgenden Voraussetzungen erfüllt sind:
Sie haben das Ziel-Docker-Repository in Artifact Registry für die zu kopierenden Images erstellt.
Sie haben die erforderlichen Berechtigungen:
Artifact Registry-Leser (
roles/storage.objectViewer) oder eine Rolle mit entsprechenden Berechtigungen für das Repository, aus dem Sie kopieren.Artifact Registry-Autor (
roles/artifactregistry.writer) oder eine Rolle mit entsprechenden Berechtigungen für das Ziel-Repository.
Übersicht
Das Tool gcrane vereinfacht das Kopieren zwischen Repositories und bietet Unterstützung für Folgendes:
- Kopieren von Imagesätzen mit einem einzigen Befehl, einschließlich aller Images unter einem bestimmten Pfad oder aller Images, die auf einem multiregionalen Host in Ihrem Projekt gespeichert sind.
- Überspringen von Imageebenen, die bereits hochgeladen wurden.
Nicht verwendete Images entfernen
Wenn Sie nicht verwendete Images entfernen, bevor Sie einen Kopiervorgang ausführen, können Sie die Speicherkosten senken.
„gcrane“ einrichten
Sie können gcrane in den folgenden 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. Wenn sich die VM-Instanz an einem anderen Standort als das Quell-Repository befindet, fallen für die kopierten Images möglicherweise Gebühren für ausgehenden Netzwerktraffic an.
Wir empfehlen, die neueste Version des Tools gcrane zu verwenden, damit Sie von allen verfügbaren Funktionen und Verbesserungen profitieren können. Die Einrichtungsanleitung in den folgenden Abschnitten enthält Schritte zum Herunterladen der neuesten Version.
Führen Sie den folgenden Befehl aus, um die Version einer vorhandenen „gcrane“-Installation zu prüfen:
gcrane version
Compute Engine einrichten
So kopieren Sie Images mit gcrane aus einer Compute Engine-VM-Instanz:
- Erstellen Sie eine VM-Instanz. Erstellen Sie die Instanz am selben Speicherort wie die Registry, aus der Sie kopieren, 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-rwErsetzen 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
gcraneherunterzuladen.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gzFühren Sie die folgenden Befehle aus, um den Befehl
gcraneausführbar zu machen:tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/Führen Sie den Befehl
gcrane --helpaus, um die Installation zu prüfen.
Jetzt können Sie Images kopieren. So fahren Sie fort:
Lokalen Computer einrichten
Laden Sie
gcraneaus dem GitHub-Repository herunter. Mit dem folgenden Befehl wird beispielsweise die Linux x86-64-Distribution über die Befehlszeile heruntergeladen.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gzFühren Sie die folgenden Befehle aus, um den Befehl
gcraneausführbar zu machen: Dabei wird davon ausgegangen, dass die heruntergeladene Datei den Namengo-containerregistry.tar.gzhat.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/Führen Sie den Befehl
gcrane --helpaus, um die Installation zu prüfen.
Jetzt können Sie Images kopieren. So fahren Sie fort:
Images identifizieren, die kopiert werden sollen
Nachdem Sie das Tool gcrane installiert haben, können Sie die vorhandenen Images im Quell-Repository 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-docker.s3nsregistry.fr/PROJECT/REPOSITORY
Führen Sie den folgenden Befehl aus, um die Tags eines Images aufzulisten:
gcrane ls LOCATION-docker.s3nsregistry.fr/PROJECT/IMAGE
Führen Sie den folgenden Befehl aus, um Images rekursiv unter einem bestimmten Pfad aufzulisten:
gcrane ls -r LOCATION-docker.s3nsregistry.fr/PROJECT/PATH
Führen Sie für jeden Befehl folgende Schritte aus:
- Ersetzen Sie LOCATION durch den Speicherort des Repositorys.
- Ersetzen Sie PROJECT durch die Projekt-ID.
- Ersetzen Sie PATH durch den zu kopierenden Pfad.
Informationen zu den Befehlen zum Kopieren von Images finden Sie unter Images kopieren.
Images kopieren
Mit dem Befehl gcrane cp können Sie einzelne Images oder Imagesätze kopieren.
Führen Sie den folgenden Befehl aus, um ein einzelnes Image zu kopieren:
gcrane cp LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1/IMAGE1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2/IMAGE2
Führen Sie den folgenden Befehl aus, um Images rekursiv unter einem bestimmten Pfad in einem Repository zu kopieren:
gcrane cp -r LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1/IMAGE1/PATH1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2/IMAGE2/PATH2
Führen Sie den folgenden Befehl aus, um alle Images in einem Repository zu kopieren:
gcrane cp -r LOCATION1-docker.s3nsregistry.fr/PROJECT1/REPOSITORY1 \
LOCATION2-docker.s3nsregistry.fr/PROJECT2/REPOSITORY2
Ersetzen Sie die folgenden Werte:
- LOCATION1 ist der Speicherort des Quell-Repositorys.
- LOCATION2 ist der Speicherort des Ziel-Repositorys.
- PROJECT1 ist die Cloud de Confiance Projekt-ID, die mit dem Quell-Repository verknüpft ist.
- PROJECT2 ist die Cloud de Confiance Projekt-ID, die mit dem Ziel-Repository verknüpft ist.
- REPOSITORY1 ist der Name des Quell-Repositorys.
- REPOSITORY2 ist der Name des Ziel-Repositorys.
- IMAGE1 ist das Image, das Sie kopieren möchten.
- IMAGE2 ist der Name des Images im Ziel-Repository.
Beispiele
Mit dem folgenden Befehl wird my-image:tag1 aus dem Repository repo1 in das Repository repo2 innerhalb desselben Projekts und derselben Region kopiert.
gcrane cp u-france-east1-docker.s3nsregistry.fr/my-project/repo1/my-image:tag1 \
u-france-east1-docker.s3nsregistry.fr/my-project/repo2/my-image:tag1
Mit dem folgenden Befehl werden alle Images unter test-images/testing im Repository repo1 rekursiv in denselben Pfad unter dem Repository repo2 kopiert.
gcrane cp -r u-france-east1-docker.s3nsregistry.fr/my-project/repo1/test-images/testing \
u-france-east1-docker.s3nsregistry.fr/my-project/repo2/test-images/testing
Mit dem folgenden Befehl werden alle Images aus dem Repository my-repo im Projekt dev-project in das Repository my-repo in einem anderen Projekt namens prod-project kopiert.
gcrane cp -r u-france-east1-docker.s3nsregistry.fr/dev-project/my-repo \
u-france-east1-docker.s3nsregistry.fr/prod-project/my-repo