Un Container è un insieme di immagini applicative distinte, isolate dal resto del sistema operativo pur condividendo il kernel ossia la parte che gestisce le risorse software con l’hardware del client

 

Il Container Linux che contiene una applicazione dove sono presenti le librerie, le dipendenze ed i file necessari

 

 

Il Container quindi nasce per separare e virtualizzare dei processi in un ambiente modificato (tipo chroot) in modo tale che ogni tipo di accesso (filesystem, user, etc…) non potesse compromettere l’intero sistema

 

 

Il Container presente tecnologie quali i gruppi di controllo (cgroups) i quali sono una feature del kernel per controllare e limitare l’uso di risorse da parte di un determinato processo; i cgroups utilizzano un sistema (systemd) di inizializzazione che configura lo spazio utente e ne gestisce i processi

 

 

Il Container utilizza tecniche di virtualizzazione come lo spazio dei nomi dei kernel (ID di processo o nomi di rete), lo spazio dei nomi utente (ID user ed ID groups a livello di spazio dei nomi)

 

 

Il Container Linux è chiamato anche LXC

 

 

Altri Container come Docker consente maggiori capability come quella di invio delle immagini e di versioning, agevola la suddivisione delle applicazioni nei vari processi e mette a disposizione strumenti per farlo

 

 

Kubernetes (K8s) è una piattaforma opensource che consente di gestire cluster di host su cui vengono eseguiti Container Linux su cloud pubblici o privati o ibridi.

 

 

Kubernetes si integra con reti, storage, security per mettere a disposizione una infrastruttura di Container completa ed utilizza un sistema di Orchestration

 

 

Differenza grafica tra concetto di virtualizzazione e Container

 

diff vm container