Nell'ambito della transizione da Container Registry ad Artifact Registry, puoi copiare le immagini di Container Registry che vuoi conservare Artifact Registry.
Panoramica
Esistono diverse opzioni per copiare le immagini da Container Registry Artifact Registry. Consigliamo di copiare le immagini con lo strumento di migrazione automatica, perché supporta la copia di più progetti, può copiare le immagini anche se hai già reindirizzamento attivo e può gestire un numero maggiore di immagini rispetto ad altre di machine learning. Se non hai più di 10.000 immagini e non hai ancora attivato l'opzione il reindirizzamento, puoi usare lo strumento gcrane che supporta anche la copia di set di immagini con un singolo comando.
Per ridurre i costi:
Rimuovi le vecchie immagini senza tag prima di copiare i contenitori in Artifact Registry.
Se stai copiando le immagini in un Artifact Registry standard (
pkg.dev
) repository disattiva la scansione automatica per Artifact Registry prima di copiare le immagini al fine di evitare duplicati dell'analisi dei dati. Puoi riattivare la scansione automatica dopo aver copiato tutti i in formato Docker.Se stai copiando immagini in un repository
gcr.io
su Artifact Registry non devi disattivare la scansione automatica.Per ulteriori informazioni sul controllo dei costi relativi all'analisi delle vulnerabilità, vedi Controllo dei costi dell'analisi delle vulnerabilità.
Rimuovi le immagini senza tag da Container Registry
La rimozione delle immagini senza tag riduce il costo dello spazio di archiviazione in Container Registry nonché il costo della copia di immagini da Container Registry ad Artifact Registry.
Sono disponibili numerosi strumenti per identificare e automatizzare la rimozione
le immagini che non ti servono più. Ad esempio,
gcr-cleaner
aiuta a trovare e rimuovere le vecchie immagini in base a diversi criteri.
Lo strumento gcr-cleaner
non è un prodotto ufficiale di Google.
Per ulteriori informazioni su come configurare e utilizzare lo strumento, consulta gcr-cleaner documentazione.
Copia le immagini con lo strumento di migrazione automatica (opzione consigliata)
Usa lo strumento di migrazione automatica per passare da Container Registry a Repository gcr.io su Artifact Registry o in Artifact Registry standard o copiare immagini da Container Registry ad Artifact Registry.
Questo strumento supporta solo la migrazione e la copia nella stessa località (più regioni).
Segui le istruzioni in Esegui automaticamente la migrazione ad Artifact Registry per copiare le tue immagini da Container Registry ad Artifact Registry.
Copia delle immagini con GCrane
Per copiare le immagini in Artifact Registry, puoi anche utilizzare il metodo
gcrane
.
gcrane
consente di copiare immagini tra più regioni, ma presenta quanto segue
svantaggi:
gcrane
è più lento rispetto agli strumenti automatici.gcrane
è limitato dalla quota di Container Registry.gcrane
può non riuscire se un'immagine ha più di 10.000 versioni o tag.gcrane
può non riuscire se alcune immagini sono configurate in modo errato o mancano dati.
Requisiti
Verifica i seguenti requisiti:
Hai abilitato Artifact Registry nell'origine e progetti Google Cloud di destinazione.
Hai creato un repository Docker in Artifact Registry per le immagini che stai copiando.
Disponi delle autorizzazioni necessarie:
Visualizzatore oggetti Storage (
roles/storage.objectViewer
) o un ruolo con autorizzazioni equivalenti sul bucket di archiviazione per l'host di Container Registry. Scopri di più sulla concessione di queste autorizzazioni.Writer Artifact Registry (
roles/artifactregistry.writer
) o un ruolo con autorizzazioni equivalenti per Artifact Registry repository Git. Scopri di più sulla concessione di queste autorizzazioni.
Per utilizzare l'opzione di copia rapida, verifica i seguenti requisiti:
Devi utilizzare gcrane versione 0.10.0 o successiva. Le istruzioni di configurazione di gcrane in questa documentazione includono i passaggi per scarica l'ultima versione.
Per verificare la versione di un'installazione gcrane esistente, esegui questo comando:
gcrane version
L'agente di servizio Artifact Registry del progetto di destinazione deve avere il Ruolo Visualizzatore oggetti Storage (
roles/storage.objectViewer
) o un ruolo con autorizzazioni equivalenti nel progetto di origine. Esegui questo comando per concedi il ruolo Visualizzatore oggetti Storage all'agente di servizio:gcloud projects add-iam-policy-binding SOURCE_PROJECT_ID \ --member='serviceAccount:service-DEST_PROJECT_NUMBER@gcp-sa-artifactregistry.iam.gserviceaccount.com' \ --role='roles/storage.objectViewer'
Sostituisci
SOURCE_PROJECT_ID
con l'ID (ad es: "my-project") di Google Cloud. con i tuoi host Container Registry.Sostituisci
DEST_PROJECT_NUMBER
con il numero (ad es. 12345) del progetto Google Cloud con il tuo repository Artifact Registry.
Opzioni e costi relativi all'ambiente
Puoi eseguire gcrane
da diversi ambienti:
Istanza Compute Engine: utilizza questa opzione se hai un numero maggiore di di container da copiare.
Costi:
- Tempo di attività dell'istanza per della VM di Compute Engine.
- Trasferimento dei dati di rete per le immagini copiate, a meno che non utilizzi l'opzione di copia rapida. Per ridurre al minimo i costi:
- Utilizza un'istanza VM nella stessa località di Container Registry Cloud Storage.
- Per ridurre al minimo i costi e massimizzare la velocità di copia, utilizza Artifact Registry nella stessa area multiregionale di Container Registry. Trasferimento dei dati all'interno della stessa località multiregionale non comporta addebiti ed è molto più veloce che copiare tra più località.
Cloud Shell: un'opzione per copiare piccoli set di circa 40 GB o meno. Poiché
gcrane
salta il caricamento dei livelli immagine già caricati, questo relativo ai nuovi dati che stai copiando.La copia di repository più grandi potrebbe causare la disconnessione di Cloud Shell dopo il periodo di timeout della richiesta di 10 minuti.
Costi:il trasferimento di dati di rete delle immagini copiate, a meno che utilizzando l'opzione di copia rapida.
- Non puoi scegliere la località di Cloud Shell durante la sessione. Per verificare la posizione della sessione corrente, esegui il comando:
curl metadata/computeMetadata/v1/instance/zone
- Per ridurre al minimo i costi e massimizzare la velocità di copia, utilizza Artifact Registry nella stessa area multiregionale di Container Registry. Trasferimento dei dati all'interno della stessa località multiregionale non comporta addebiti ed è molto più veloce che copiare tra più località.
Macchina locale: se non puoi utilizzare le altre opzioni, puoi eseguire
gcrane
da una macchina locale.Costi:il trasferimento di dati di rete delle immagini copiate, a meno che usando l'opzione di copia rapida
Per ridurre al minimo i costi e massimizzare la velocità di copia, utilizza Artifact Registry nella stessa area multiregionale di Container Registry. Trasferimento di dati entro la stessa località multiregionale non comporta addebiti ed è molto più veloce rispetto alla tra più località.
Configurazione di Compute Engine
Per copiare immagini con gcrane
da un'istanza VM di Compute Engine:
- Crea un'istanza VM. Per ridurre al minimo i costi, crea l'istanza nella stessa località registro da cui stai eseguendo la copia.
Per impostazione predefinita, l'istanza VM è associata account di servizio predefinito e dispone delle autorizzazioni per eseguire il pull delle immagini. Devi modificare l'ambito di accesso in modo che dell'istanza VM può eseguire il push delle immagini.
Arresta l'istanza VM. Consulta Arresto di un'istanza.
Modifica l'ambito di accesso con il comando:
gcloud compute instances set-service-account INSTANCE --scopes=storage-rw
Sostituisci INSTANCE con il nome dell'istanza VM.
Riavvia l'istanza VM. Consulta Avvio di un'istanza arrestata.
Connettiti alla VM utilizzando SSH.
Esegui questo comando per scaricare
gcrane
.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Esegui questi comandi per rendere eseguibile il comando
gcrane
.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Esegui il comando
gcrane --help
per verificare l'installazione.
Ora è tutto pronto per copiare le immagini. Per continuare:
Configurazione di Cloud Shell
Apri una finestra di Cloud Shell.
Imposta il progetto predefinito. Sostituisci PROJECT con l'ID del progetto in cui sono installati Container Registry e Artifact Registry
gcloud config set project PROJECT
Esegui questo comando per scaricare lo strumento
gcrane
.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Esegui questi comandi per rendere eseguibile il comando
gcrane
.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Esegui il comando
gcrane --help
per verificare l'installazione.
Ora è tutto pronto per copiare le immagini. Per continuare:
Configurazione di una macchina locale
Scarica
gcrane
dal repository GitHub. Ad esempio, il seguente comando scarica la distribuzione Linux x86-64 dalla riga di comando.curl -L \ https://github.com/google/go-containerregistry/releases/latest/download/go-containerregistry_Linux_x86_64.tar.gz \ -o go-containerregistry.tar.gz
Esegui questi comandi per rendere eseguibile il comando
gcrane
. La presuppongono che il file scaricato sia denominatogo-containerregistry.tar.gz
.tar -zxvf go-containerregistry.tar.gz chmod +x gcrane sudo mv gcrane /usr/local/bin/
Esegui il comando
gcrane --help
per verificare l'installazione.
Ora è tutto pronto per copiare le immagini. Per continuare:
Identificazione delle immagini da copiare
Dopo aver installato gcrane, puoi elencare le immagini esistenti in e Container Registry per trovare quelli da copiare.
Per elencare le immagini esistenti, esegui il comando:
gcrane ls LOCATION.gcr.io/PROJECT
Per elencare i tag di un'immagine, esegui il comando:
gcrane ls LOCATION.gcr.io/PROJECT/IMAGE
Per elencare le immagini in modo ricorsivo in un percorso specifico, esegui il comando:
gcrane ls -r LOCATION.gcr.io/PROJECT/PATH
Per ognuno dei comandi:
- Sostituisci
LOCATION
con la località multiregionale del registro:asia
,eu
ous
. - Sostituisci
PROJECT
con l'ID progetto.
Consulta Copia delle immagini per conoscere i comandi per copiare le immagini.
Copia delle immagini in corso...
Puoi copiare singole immagini da Container Registry, tutte le immagini in un specificato in una località o a tutte le immagini archiviate in una località.
Copia di una singola immagine in corso...
Per copiare una singola immagine taggata, esegui il comando:
gcrane cp GCR-LOCATION.gcr.io/PROJECT/IMAGE \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/IMAGE
Dove
- GCR-LOCATION corrisponde alla località multiregionale dell'host di Container Registry:
asia
,eu
ous
. - AR-LOCATION indica la regione o più regioni del repository.
- PROJECT è l'ID progetto.
- REPOSITORY è il nome del repository Artifact Registry.
- GCR-IMAGE è l'immagine da cui vuoi copiare e Container Registry.
- AR-IMAGE è il nome dell'immagine in Artifact Registry.
Considera ad esempio le seguenti immagini di origine e di destinazione:
- Immagine di Container Registry:
eu.gcr.io/my-project/my-image:tag1
- Immagine Artifact Registry:
europe-docker.pkg.dev/my-project/my-repo/my-image:tag1
Esegui questo comando per copiare l'immagine:
gcrane cp eu.gcr.io/my-project/my-image:tag1 \
europe-docker.pkg.dev/my-project/my-repo/my-image:tag1
Copia di tutte le immagini in un percorso in corso...
Per copiare le immagini in modo ricorsivo in un percorso specifico in Container Registry, esegui il :
gcrane cp -r GCR-LOCATION.gcr.io/PROJECT/GCR-PATH \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/AR-PATH
Dove
- GCR-LOCATION corrisponde alla località multiregionale dell'host di Container Registry:
asia
,eu
ous
. - AR-LOCATION indica la regione o più regioni del repository.
- PROJECT è l'ID progetto.
- REPOSITORY è il nome del repository Artifact Registry.
- GCR-PATH è il percorso dei file da copiare.
- AR-PATH è il percorso delle immagini in Artifact Registry repository Git.
Ad esempio, considera i seguenti percorsi di origine e di destinazione:
- Percorso Container Registry:
eu.gcr.io/my-project/test-images/testing
- Percorso Artifact Registry:
europe-docker.pkg.dev/my-project/my-repo/test-images/testing
Il seguente comando copia in modo ricorsivo tutte le immagini in test-images/testing
nel repository my-repo
:
gcrane cp -r eu.gcr.io/my-project/test-images/testing \
europe-docker.pkg.dev/my-project/my-repo/test-images/testing
Copia di tutte le immagini da una posizione di Container Registry
Per copiare tutte le immagini da un'area multiregionale di Container Registry, esegui il comando:
gcrane cp -r GCR-LOCATION.gcr.io/PROJECT \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY
Dove
- GCR-LOCATION corrisponde alla località multiregionale dell'host di Container Registry:
asia
,eu
ous
. - AR-LOCATION indica la regione o più regioni del repository.
- PROJECT è l'ID progetto.
- REPOSITORY è il nome del repository Artifact Registry.
Se vuoi copiare immagini per più di una posizione di Container Registry nel esegui il comando una volta per ogni host.
Ad esempio, considera il seguente registro di origine e Artifact Registry di destinazione repository Git. In questo esempio, Container Registry e Artifact Registry in progetti diversi.
- Host di Container Registry:
eu.gcr.io/my-project
- Immagine Artifact Registry:
europe-docker.pkg.dev/new-project/my-repo
Il comando seguente copia tutte le immagini dalla località multiregionale eu
in
progetto my-project
nel repository my-repo
nel progetto new-project
.
gcrane cp -r eu.gcr.io/my-project \
europe-docker.pkg.dev/new-project/my-repo
Copia delle immagini con Docker
A differenza dei metodi di copia gcrane e gcloud, questo approccio prevede due fasi.
- Eseguire il pull di un'immagine da Container Registry
- Esegui il push dell'immagine nel repository Artifact Registry.
Requisiti
Verifica i seguenti requisiti:
Hai creato un repository Docker in Artifact Registry per le immagini che stai copiando.
Disponi delle autorizzazioni necessarie:
Visualizzatore oggetti Storage (
roles/storage.objectViewer
) o un ruolo con autorizzazioni equivalenti sul bucket di archiviazione per l'host di Container Registry. Scopri di più sulla concessione di queste autorizzazioni.Writer Artifact Registry (
roles/artifactregistry.writer
) o un ruolo con autorizzazioni equivalenti per Artifact Registry repository Git. Scopri di più sulla concessione di queste autorizzazioni.
Hai configurato Docker per l'autenticazione su entrambi Container Registry e Artifact Registry.
Costi
Quando esegui il pull di un'immagine, ti viene addebitato il costo del trasferimento di dati di rete. Il prezzo specifico dipende dalla destinazione del comando pull. Ad esempio, se esegui il pull di un'immagine da una sessione di Cloud Shell, riguarda il trasferimento di dati di rete all'interno di Google Cloud. Se esegui il pull di un'immagine su una macchina esterna a Google Cloud, prezzi per il trasferimento di dati di rete generico.
I comandi Docker che utilizzi per taggare, eseguire il push e il pull delle immagini Artifact Registry è simile a quelli che utilizzi in Container Registry. Esistono due differenze fondamentali:
- Il nome host per i repository Docker di Artifact Registry include una località
seguito da
-docker.pkg.dev
. Tra gli esempi possibiliaustralia-southeast1-docker.pkg.dev
,europe-north1-docker.pkg.dev
, eeurope-docker.pkg.dev
. - Poiché Artifact Registry supporta più repository Docker in un singolo devi specificare il nome del repository nei comandi.
Per copiare un'immagine in Artifact Registry con Docker, esegui il pull dell'immagine da Container Registry ed eseguire il push al tuo repository Artifact Registry.
Considera ad esempio un'immagine di Container Registry nell'area multiregionale eu
e che vuoi copiare in un repository Artifact Registry nella
Regione europe
.
- Immagine di Container Registry:
eu.gcr.io/my-project/my-image:tag1
- Immagine Artifact Registry:
europe-docker.pkg.dev/my-project/my-repo/my-image:tag1
Il comando seguente esegue il pull dell'immagine da Container Registry.
docker pull eu.gcr.io/my-project/my-image:tag1
Il comando seguente esegue il push dell'immagine nel repository Artifact Registry
denominato my-repo
.
docker push europe-north1-docker.pkg.dev/my-project/my-repo/my-image
Puoi anche eseguire il push delle immagini in un repository Artifact Registry
configurato in un altro progetto. In questo esempio viene eseguito il push della stessa immagine di origine
il repository my-repo
nel progetto new-project
.
docker push europe-north1-docker.pkg.dev/new-project/my-repo/my-image
Per maggiori dettagli sul push e sul pull delle immagini Per Artifact Registry, vedi Push e pull delle immagini.
Copia delle immagini con gcloud
Utilizza il comando gcloud container images add-tag
per copiare un'immagine da
da Container Registry al repository Artifact Registry.
Requisiti
Verifica i seguenti requisiti:
Hai creato un repository Docker in Artifact Registry per le immagini che stai copiando.
Disponi delle autorizzazioni necessarie:
Visualizzatore oggetti Storage (
roles/storage.objectViewer
) o un ruolo con autorizzazioni equivalenti sul bucket di archiviazione per l'host di Container Registry. Scopri di più sulla concessione di queste autorizzazioni.Writer Artifact Registry (
roles/artifactregistry.writer
) o un ruolo con autorizzazioni equivalenti per Artifact Registry repository Git. Scopri di più sulla concessione di queste autorizzazioni.
Costi
Se Container Registry si trova in una località diversa da quella nel repository Artifact Registry, addebiti per il trasferimento di dati di rete possono essere applicate alle immagini che copi. Se entrambi i servizi si trovano nella stessa località, il trasferimento di dati è gratuito.
Esegui questo comando per copiare un'immagine da Container Registry Artifact Registry:
gcloud container images add-tag GCR-IMAGE AR-IMAGE
Dove
- GCR-IMAGE è il percorso completo dell'immagine di Container Registry.
- AR-IMAGE è il percorso completo dell'immagine in repository Artifact Registry.
Considera ad esempio le seguenti immagini di origine e di destinazione:
- Immagine di Container Registry:
eu.gcr.io/my-project/my-image:tag1
- Immagine Artifact Registry:
europe-docker.pkg.dev/my-project/my-repo/my-image:tag1
Questo comando copia l'immagine da Container Registry nel
più regioni eu
nel repository my-repo
nell'area multiregionale europe
.
gcloud container images add-tag eu.gcr.io/my-project/my-image:tag1 \
europe-docker.pkg.dev/my-project/my-repo/my-image:tag1
Puoi anche copiare immagini in un repository Artifact Registry
configurato in un altro progetto. Questo esempio copia la stessa immagine di origine in
il repository my-repo
nel progetto new-project
.
gcloud container images add-tag eu.gcr.io/my-project/my-image:tag1 \
europe-docker.pkg.dev/new-project/my-repo/my-image:tag1
Passaggi successivi
- Scopri di più sulla transizione da Container Registry ad Artifact Registry, con funzionalità e comando gcloud CLI e i confronti.
- Scopri di più sulle modifiche per Docker.
- Scopri di più sulle modifiche per la creazione e il deployment in Google Cloud.