Concetti sui container

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 repository
  • docker.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 di quickstart-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 Registry google-samples è il progetto Google Cloud e containers è definito repository di Artifact Registry
  • hello-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