Questo documento introduce i concetti chiave relativi ai contenitori, tra cui registri, repository e elementi. 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 immagini container e artefatti organizzati per nome all'interno di repositories. 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 estrai immagini pubbliche, è importante comprendere i possibili problemi di sicurezza. Consulta la sezione sulla gestione delle dipendenze per ulteriori informazioni sul monitoraggio delle vulnerabilità e sulla riduzione del footprint delle dipendenze.
I registry sono organizzati in repository che archiviano le singole immagini dei container. Artifact Registry ti consente di creare più repository in un singolo progetto e di associare a ogni repository una regione o multi-regione specifica. I repository correlati possono essere raggruppati per etichette.
Repository
Le immagini e gli elementi con lo stesso nome, ma tag diversi, sono organizzati in repository. Se non viene specificato alcun tag quando un'immagine viene trasferita 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 latest viene spostato dall'immagine originale a quella più recente, lasciando la prima senza tag. Ti consigliamo di assegnare alle release un tag diverso da latest.
Il termine repository non viene sempre utilizzato in modo coerente. In Artifact Registry è più utile utilizzare parti del percorso dell'immagine per identificare il progetto, la regione o multiregione e il nome dell'immagine insieme al tag o al digest del 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 posizione del repositorydocker.pkg.dev
è il nome host per i repository Docker.- PROJECT è lo spazio dei nomi creato dall'ID progetto Google Cloud.
quickstart-docker-repo
è lo spazio dei nomi del progetto in cui memorizzi le immagini. In Artifact Registry, questa parte del percorso è chiamata repository.quickstart-image
è il repository di tutte le versioni diquickstart-image
e viene spesso definito l'immagine.tag1
è il tag che specifica la versione dell'immagine.
Immagini
Sia gli elementi che le immagini possono essere archiviati in Artifact Registry. Un elemento può essere qualsiasi: un file di testo, un'immagine Docker o un grafico Helm, mentre un'immagine in genere si riferisce a un'immagine del contenitore. Le immagini container sono pacchetti di software che contengono tutti gli elementi necessari per l'esecuzione in qualsiasi ambiente. Per saperne di più, consulta Che cosa sono i container.
Le immagini vengono inviate o caricate nei repository e esportate o scaricate dai repository. Per specificare l'immagine e la versione corrette, devono essere specificati il registro e l'elemento 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 i sottospazi dei nomi. In Artifact Registrygoogle-samples
è il progetto Google Cloud econtainers
è indicato come repository Artifact Registryhello-app
è il nome dell'elemento:1.0
è il tag che specifica la versione dell'elemento da estrarre
Base
Le immagini container archiviate nei repository vengono costruite in modo incrementale utilizzando 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 condividono questi livelli, aumentando l'efficienza dello spazio di 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 fa riferimento nessuna immagine nel registry vengono eliminati ogni giorno.
Tag
Gli utenti aggiungono i 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 oppure non avere alcun tag. Se carichi un'immagine due volte con lo stesso tag, il tag viene rimosso dalla prima immagine e spostato nella seconda, lasciando la prima senza tag. L'immagine non taggata è comunque accessibile tramite i relativi digest manifest.
Il tag latest
è un tag speciale aggiunto quando le immagini vengono inviate senza un tag.
Ad esempio:
docker push us-west1-docker.pkg.dev/my-project/my-repo/hello-app
spinge l'immagine in hello-app:latest
docker pull us-west1-docker.pkg.dev/my-project/my-repo/hello-app
acquisisce l'immagine hello-app:latest
.
È importante notare che quando un'immagine viene inviata a un repository con un tag diverso da latest
, il tag latest
non viene aggiunto, pertanto è possibile che l'immagine latest
non sia aggiornata alle modifiche più recenti. Consigliamo di utilizzare tag diversi da latest
per le uscite.
Manifest
I manifest delle immagini identificano e specificano in modo univoco i livelli all'interno di ogni immagine. I manifest vengono identificati da hash SHA-256 univoci chiamati digest dei manifest. I digest manifest sono più affidabili e sicuri dei tag perché è possibile eseguire il push di più versioni della stessa immagine nello stesso tag, lasciando alcune immagini senza tag, mentre ogni immagine è specificata in modo univoco dal relativo digest manifest.
Se utilizzi strumenti per scansionare o analizzare le immagini, i risultati di questi strumenti sono validi solo per l'immagine scansionata. Per assicurarti di eseguire il deployment dell'immagine acquisita, non puoi fare affidamento sul tag perché l'immagine a cui fa riferimento il tag potrebbe cambiare.
Per scoprire di più su tagging e manifest specifici di Artifact Registry, consulta Gestire le immagini e Utilizzare le immagini dei container.
Passaggi successivi
- Guida rapida di Docker
- Lavorare con le immagini container
- Guida rapida di Helm
- Lavorare con i grafici Helm
- Scopri di più su DevOps ed esplora il programma di ricerca DORA.