Questo documento introduce i concetti chiave relativi ai container, tra cui registri, repository e artefatti. Sono incluse anche alcune informazioni di base su come questi concetti si applicano ad Artifact Registry e Container Registry .
Registri
Un registry archivia e distribuisce le immagini container e gli artefatti organizzati per nome all'interno di repository. Un registry può contenere un singolo repository o più repository e può essere pubblico o privato.
I servizi di Registry come Docker Hub e Artifact Registry forniscono opzioni per creare repository pubblici o privati. Quando si estrae immagini pubbliche, è importante comprendere i possibili problemi di sicurezza. Leggi la sezione sulla gestione delle dipendenze per ulteriori informazioni sul monitoraggio delle vulnerabilità e sulla riduzione dell'impatto delle dipendenze.
I registry sono organizzati in repository che archiviano singole immagini container. Artifact Registry consente di creare più repository in un singolo progetto e associare una specifica regioneo più regioni a ogni repository. I repository correlati possono essere raggruppati per etichette.
Repository
Le immagini e gli artefatti con lo stesso nome, ma tag diversi, sono organizzati in repository. Se non viene specificato alcun tag quando viene eseguito il push di un'immagine in un repository, l'immagine viene taggata con il tag latest. Se viene eseguito il push di un'altra immagine senza specificare un tag, il tag più recente viene spostato dall'immagine originale a quella più recente, lasciando la prima immagine senza tag. Ti consigliamo di assegnare alle release un tag diverso da latest.
Il termine repository non viene sempre utilizzato in modo coerente; all'interno di Artifact Registry è più utile utilizzare parti del percorso dell'immagine per identificare il progetto, regione o più regioni e il nome dell'immagine insieme al tag o al digest manifest per identificare la versione corretta.
Ad esempio:
docker push us-west1-docker.pkg.dev/PROJECT/quickstart-docker-repo/quickstart-image:tag1
us-west1
è la località del repositorydocker.pkg.dev
è il nome host per i repository Docker.- PROJECT è lo spazio dei nomi creato dall'ID progetto di Google Cloud.
quickstart-docker-repo
è lo spazio dei nomi all'interno del tuo progetto in cui archivi le immagini. In Artifact Registry, questa parte del percorso è chiamata repository.quickstart-image
è il repository per tutte le versioni diquickstart-image
ed è spesso definito l'immagine.tag1
è il tag che specifica la versione dell'immagine.
Immagini
Sia gli artefatti che le immagini possono essere archiviati in Artifact Registry. Un artefatto può essere qualsiasi cosa: un file di testo, un'immagine Docker o un grafico Helm, mentre un'immagine in genere si riferisce a un'immagine container. Le immagini container sono pacchetti di software che contengono tutti gli elementi necessari per l'esecuzione in qualsiasi ambiente. Per ulteriori informazioni, consulta Cosa sono i container.
Le immagini vengono inviate tramite push o caricate nei repository e pullate o scaricate dai repository. Per specificare l'immagine e la versione corrette, è necessario specificare il registro e l'artefatto univoci.
Ad esempio:
docker pull us-west1-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
us-west1-docker.pkg.dev
è il registry/google-samples/containers/gke/
sono lo spazio dei nomi e gli spazi secondari dei nomi. In Artifact Registrygoogle-samples
è il progetto Google Cloud econtainers
è definito repository di Artifact Registryhello-app
è il nome dell'artefatto:1.0
è il tag che specifica la versione dell'artefatto da estrarre
Base
Le immagini container archiviate nei repository vengono create in modo incrementale utilizzando i livelli. Immagini diverse possono utilizzare alcuni degli stessi livelli. I livelli vengono definiti in modi diversi a seconda del tipo di immagine; ad esempio, ogni istruzione in un Dockerfile corrisponde a un livello nell'immagine Docker. All'interno di un registry, le immagini con livelli comuni li condividono, aumentando l'efficienza dell'archiviazione. Per motivi di sicurezza, i livelli non vengono condivisi tra registri diversi.
Quando elimini un'immagine container, i livelli non vengono eliminati immediatamente. I livelli a cui non fanno riferimento nessuna immagine nel registro vengono eliminati ogni giorno.
Tag
Gli utenti aggiungono tag quando eseguono il push o il pull di un'immagine in un repository per specificare la versione di un'immagine. Un'immagine può avere uno o più tag o nessun tag. Se esegui il push di un'immagine due volte con lo stesso tag, il tag viene rimosso dalla prima immagine e spostato alla seconda, lasciando la prima immagine senza tag. L'immagine senza tag è ancora accessibile tramite i relativi sintesi manifest.
Il tag latest
è un tag speciale aggiunto quando le immagini vengono caricate senza tag.
Ad esempio:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
esegue il push dell'immagine a hello-app:latest
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
estrae l'immagine hello-app:latest
.
È importante notare che quando viene eseguito il push di un'immagine in un repository con un tag diverso da latest
, il tag latest
non viene aggiunto, quindi è possibile che l'immagine latest
sia soggetta alle modifiche più aggiornate. Ti consigliamo
di utilizzare tag diversi da latest
per le release. Per ulteriori informazioni sul tagging
delle immagini, leggi come taggare correttamente le immagini.
Manifest
I file manifest delle immagini identificano e specificano in modo univoco i livelli all'interno di ogni immagine. I file manifest sono identificati da hash SHA-256 univoci chiamati digest dei manifest. I digest manifest sono più affidabili e sicuri dei tag perché più versioni della stessa immagine potrebbero essere inviate allo stesso tag, lasciando alcune immagini senza tag, mentre ogni immagine viene specificata in modo univoco dal relativo digest manifest.
Se utilizzi strumenti per la scansione o l'analisi delle immagini, i risultati di questi strumenti sono validi solo per l'immagine scansionata. Per assicurarti di eseguire il deployment dell'immagine scansionata, non puoi fare affidamento sul tag, perché l'immagine a cui fa riferimento il tag potrebbe cambiare.
Per saperne di più su tag e manifest specifici di Artifact Registry, consulta Gestione delle immagini e Utilizzo delle immagini container.
Passaggi successivi
- Guida rapida di Docker
- Utilizzare le immagini container
- Guida rapida di Helm
- Utilizzare i grafici Helm
- Scopri di più su DevOps ed esplora il programma di ricerca DORA.