Nell'ambito della transizione da Container Registry ad Artifact Registry, puoi copiare le immagini di Container Registry che vuoi conservare in Artifact Registry.
Panoramica
Esistono diverse opzioni per copiare le immagini da Container Registry ad Artifact Registry. Ti 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à attivato il reindirizzamento ed è in grado di gestire un numero di immagini maggiore rispetto ad altri metodi. Se non hai più di 10.000 immagini e non hai ancora abilitato il reindirizzamento, puoi utilizzare lo strumento gcrane, che supporta anche la copia di insiemi di immagini con un singolo comando.
Per ridurre i costi:
Rimuovi le immagini precedenti senza tag prima di copiare i container in Artifact Registry.
Se copi le immagini in un repository Artifact Registry standard (
pkg.dev
), disabilita la scansione automatica per Artifact Registry prima di copiare le immagini per evitare costi di analisi duplicati. Puoi riattivare la scansione automatica dopo aver copiato tutte le immagini.Se copi immagini in un repository
gcr.io
su Artifact Registry, non è necessario disabilitare la scansione automatica.Per ulteriori informazioni sul controllo dei costi relativi all'analisi delle vulnerabilità, consulta Controllo dei costi dell'analisi delle vulnerabilità.
Rimuovere le immagini senza tag da Container Registry
La rimozione delle immagini senza tag riduce i costi di archiviazione in Container Registry e di copia delle immagini da Container Registry ad Artifact Registry.
Sono disponibili numerosi strumenti per identificare e automatizzare la rimozione
delle immagini di cui non hai più bisogno. Ad esempio, lo strumento gcr-cleaner consente di trovare e rimuovere le immagini precedenti in base a diversi criteri.
Lo strumento gcr-cleaner
non è un prodotto ufficiale di Google.
Per ulteriori informazioni sulla configurazione e sull'utilizzo dello strumento, consulta la documentazione di gcr-cleaner.
Copia le immagini con lo strumento di migrazione automatica
Utilizza lo strumento di migrazione automatica per eseguire la transizione da Container Registry ai repository gcr.io su Artifact Registry, ai repository Artifact Registry standard o per copiare le tue immagini da Container Registry ad Artifact Registry.
Segui le istruzioni in Eseguire la migrazione automatica ad Artifact Registry per copiare le immagini da Container Registry ad Artifact Registry.
Copia di immagini con gcrane
Per copiare immagini su Artifact Registry, puoi utilizzare lo
strumento gcrane
.
gcrane
offre diversi vantaggi rispetto alla copia delle immagini con Docker,
tra cui:
- Copia set di immagini con un singolo comando, incluse tutte le immagini in un percorso specificato o tutte le immagini archiviate su un host multiregionale nel tuo progetto.
- Sono stati ignorati i livelli di immagini già caricati.
Un'opzione di copia rapida per la copia di immagini tra Container Registry e Artifact Registry nella stessa località multiregionale di Google Cloud.
L'opzione di copia rapida è anche il metodo di copia meno costoso. Poiché questa opzione non si basa sul pull e sul push delle immagini, non vengono addebitati costi per il trasferimento di dati di rete da Container Registry durante l'operazione di copia.
Requisiti
Verifica i seguenti requisiti:
Devi avere abilitato Artifact Registry nei progetti Google Cloud di origine e di destinazione.
Hai creato un repository Docker in Artifact Registry per le immagini che stai copiando.
Disponi delle autorizzazioni richieste:
Visualizzatore oggetti Storage (
roles/storage.objectViewer
) o un ruolo con autorizzazioni equivalenti nel bucket di archiviazione per l'host Container Registry. Scopri come concedere queste autorizzazioni.Writer Artifact Registry (
roles/artifactregistry.writer
) o un ruolo con autorizzazioni equivalenti per il repository Artifact Registry. Scopri come concedere queste autorizzazioni.
Per utilizzare l'opzione di copia rapida, verifica i seguenti requisiti:
Devi utilizzare gcrane versione 0.10.0 o successive. Le istruzioni per la configurazione di gcrane in questa documentazione includono i passaggi per scaricare la versione più recente.
Per verificare la versione di un'installazione di gcrane esistente, esegui il comando:
gcrane version
L'account di servizio gestito da Google di 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 concedere il ruolo Visualizzatore oggetti Storage all'account 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") del progetto Google Cloud con gli host di 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 container da copiare.
Costi:
- uptime dell'istanza per la 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à del bucket di archiviazione di Container Registry.
- Per ridurre al minimo i costi e massimizzare la velocità di copia, utilizza un repository Artifact Registry nella stessa multiregione di Container Registry. Il trasferimento di dati all'interno della stessa località multiregionale non prevede addebiti ed è molto più veloce della copia tra località.
Cloud Shell: un'opzione per copiare piccoli gruppi di massimo 40 GB. Poiché
gcrane
ignora il caricamento dei livelli immagine già caricati, questo limite si applica ai nuovi dati che stai copiando.Se copi repository di grandi dimensioni, Cloud Shell potrebbe disconnettersi dopo il periodo di timeout della richiesta di 10 minuti.
Costi: il trasferimento dei dati di rete per le immagini copiate, a meno che non utilizzi l'opzione di copia rapida.
- Non puoi scegliere la località di una sessione Cloud Shell. Per controllare 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 un repository Artifact Registry nella stessa multiregione di Container Registry. Il trasferimento di dati all'interno della stessa località multiregionale non prevede addebiti ed è molto più veloce della copia tra località.
Macchina locale: se non puoi utilizzare le altre opzioni, puoi eseguire
gcrane
da una macchina locale.Costi: il 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 e massimizzare la velocità di copia, utilizza un repository Artifact Registry nella stessa multiregione di Container Registry. Il trasferimento di dati all'interno della stessa località multiregionale non prevede addebiti ed è molto più rapido della copia 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 posizione del registro da cui stai eseguendo la copia.
Per impostazione predefinita, l'istanza VM è associata all'account di servizio predefinito e dispone delle autorizzazioni per eseguire il pull delle immagini. Devi modificare l'ambito di accesso in modo che l'istanza VM possa eseguire il push delle immagini.
Arresta l'istanza VM. Consulta Arresto di un'istanza.
Modifica l'ambito dell'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 all'istanza VM tramite 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:
configura una macchina locale
Scarica
gcrane
dal repository di GitHub. Ad esempio, il comando seguente 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
. I comandi 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 Container Registry per trovare quelle che vuoi 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 il valore multiregionale del registro:asia
,eu
ous
. - Sostituisci
PROJECT
con l'ID progetto.
Consulta la sezione Copia di 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 percorso specificato in una località o tutte le immagini archiviate in una località.
Copia di una singola immagine
Per copiare una singola immagine con tag, esegui il comando:
gcrane cp GCR-LOCATION.gcr.io/PROJECT/IMAGE \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/IMAGE
Dove
- GCR-LOCATION è la località multiregionale dell'host di Container Registry:
asia
,eu
ous
. - AR-LOCATION è una o più regioni del repository.
- PROJECT è l'ID progetto.
- REPOSITORY è il nome del repository Artifact Registry.
- GCR-IMAGE è l'immagine che vuoi copiare da Container Registry.
- AR-IMAGE è il nome dell'immagine in Artifact Registry.
Ad esempio, considera 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
Per copiare le immagini in modo ricorsivo in un percorso specifico in Container Registry, esegui questo comando:
gcrane cp -r GCR-LOCATION.gcr.io/PROJECT/GCR-PATH \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY/AR-PATH
Dove
- GCR-LOCATION è la località multiregionale dell'host di Container Registry:
asia
,eu
ous
. - AR-LOCATION è una 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 nel tuo repository Artifact Registry.
Ad esempio, considera i seguenti percorsi di origine e 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 una multiregione di Container Registry, esegui il comando:
gcrane cp -r GCR-LOCATION.gcr.io/PROJECT \
AR-LOCATION.pkg.dev/PROJECT/REPOSITORY
Dove
- GCR-LOCATION è la località multiregionale dell'host di Container Registry:
asia
,eu
ous
. - AR-LOCATION è una o più regioni del repository.
- PROJECT è l'ID progetto.
- REPOSITORY è il nome del repository Artifact Registry.
Se vuoi copiare le immagini per più di una posizione di Container Registry nel tuo progetto, esegui il comando una volta per ogni host.
Ad esempio, considera il seguente registro di origine e repository Artifact Registry di destinazione. In questo esempio, Container Registry e Artifact Registry si trovano in progetti diversi.
- Host del 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
del progetto my-project
al repository my-repo
nel progetto new-project
.
gcrane cp -r eu.gcr.io/my-project \
europe-docker.pkg.dev/new-project/my-repo
Copia di immagini con Docker
A differenza dei metodi di copia gcrane e gcloud, questo approccio prevede un processo in due fasi.
- Esegui 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 richieste:
Visualizzatore oggetti Storage (
roles/storage.objectViewer
) o un ruolo con autorizzazioni equivalenti nel bucket di archiviazione per l'host Container Registry. Scopri come concedere queste autorizzazioni.Writer Artifact Registry (
roles/artifactregistry.writer
) o un ruolo con autorizzazioni equivalenti per il repository Artifact Registry. Scopri come concedere queste autorizzazioni.
Hai configurato Docker per l'autenticazione sia su Container Registry che Artifact Registry.
Costi
Quando esegui il pull di un'immagine, ti viene addebitato il costo del trasferimento di dati di rete. I prezzi specifici dipendono dalla destinazione del comando pull. Ad esempio, se esegui il pull di un'immagine da una sessione di Cloud Shell, i prezzi si riferiscono al 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 generale.
I comandi Docker che utilizzi per eseguire il tagging, il push e il pull delle immagini in Artifact Registry sono simili a quelli che utilizzi in Container Registry. Esistono due differenze fondamentali:
- Il nome host per i repository Docker di Artifact Registry include un prefisso di località, seguito da
-docker.pkg.dev
. Alcuni esempi sonoaustralia-southeast1-docker.pkg.dev
,europe-north1-docker.pkg.dev
eeurope-docker.pkg.dev
. - Poiché Artifact Registry supporta più repository Docker in un singolo progetto, 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 eseguine il push nel tuo repository Artifact Registry.
Ad esempio, considera un'immagine di Container Registry nella località multiregionale eu
e da 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 seguente comando esegue il pull dell'immagine da Container Registry.
docker pull eu.gcr.io/my-project/my-image:tag1
Il seguente comando 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 che hai configurato in un altro progetto. Questo esempio esegue il push della stessa immagine di origine nel 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 in Artifact Registry, consulta Push e pull delle immagini.
Copia delle immagini con gcloud
Utilizza il comando gcloud container images add-tag
per copiare un'immagine da Container Registry al tuo 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 nel bucket di archiviazione per l'host Container Registry. Scopri come concedere queste autorizzazioni.Writer Artifact Registry (
roles/artifactregistry.writer
) o un ruolo con autorizzazioni equivalenti per il repository Artifact Registry. Scopri come concedere queste autorizzazioni.
Costi
Se Container Registry si trova in una località diversa rispetto al tuo repository di Artifact Registry, addebiti per il trasferimento di dati di rete le immagini copiate. Se entrambi i servizi si trovano nella stessa località, il trasferimento di dati di rete è gratuito.
Esegui questo comando per copiare un'immagine da Container Registry ad 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 nel repository Artifact Registry.
Ad esempio, considera 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 nella regione eu
multiregionale nel repository my-repo
nella regione europe
multiregionale.
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 le immagini in un repository Artifact Registry che hai configurato in un altro progetto. Questo esempio copia la stessa immagine di origine nel 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, inclusi i confronti di funzionalità e comandi dell'interfaccia a riga di comando gcloud.
- Scopri di più sulle modifiche per Docker.
- Scopri di più sulle modifiche per la creazione e il deployment in Google Cloud.