Concetti sui container

Questo documento introduce i concetti chiave relativi ai container, tra cui registri, repository e artefatti. Alcune informazioni di base su come queste si applicano ad Artifact Registry e Container Registry .

Registri

Un registry archivia e distribuisce immagini container e artefatti organizzati per nome all'interno di repository. Un registry può contenere un singolo repository o più repository e possono essere pubblici o privati.

I servizi di registry come Docker Hub e Artifact Registry forniscono opzioni per creare repository pubblici o privati. Quando estrai immagini pubbliche, è importante per 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 i singoli container in formato Docker. Artifact Registry consente di creare più repository in un singolo progetto e associare uno specifico una o più regioni con ogni repository. 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 specificando un tag, il tag latest 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. 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 località del repository
  • docker.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 per tutte le versioni di quickstart-image ed è spesso indicata come immagine.
  • tag1 è il tag che specifica la versione dell'immagine.

Immagini

Sia gli elementi che le immagini possono essere archiviati in Artifact Registry. Un un artefatto può essere qualsiasi cosa: un file di testo, un'immagine Docker o un grafico Helm, 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. Letto Per saperne di più, cosa sono i contenitori.

Le immagini vengono sottoposte a push o caricate nei repository e pulled 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 Registry google-samples è il progetto Google Cloud e containers è indicato come repository Artifact Registry
  • hello-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 sono 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. Livelli a cui non fanno riferimento nessuna immagine nel registro, 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 o nessun 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. La l'immagine senza tag è ancora accessibile tramite le relative sintesi del file 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

spinge l'immagine in 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, pertanto è possibile l'immagine latest dietro le modifiche più aggiornate. Consigliati per te utilizzando tag diversi da latest per le release.

Manifest

I file 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. Le sintesi dei file manifest sono più affidabili e sicure dei tag, perché più versioni della stessa immagine possono essere inviate allo 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 valida per l'immagine scansionata. Per assicurarti di eseguire il deployment dell'immagine non puoi fare affidamento sul tag perché l'immagine a cui fa riferimento modifica.

Per scoprire di più su tagging e manifest specifici di Artifact Registry, consulta Gestire le immagini e Utilizzare le immagini dei container.

Passaggi successivi