Significato e tipologie dei Container in informatica

Significato e tipologie dei Container in informatica

I container rappresentano degli spazi utente isolati in esecuzione sul sistema operativo di un server o macchina host in genere. Si tratta quindi di funzionalità del sistema operativo Linux, che permettono di virtualizzare alcune risorse di sistema per eseguire diverse applicazioni in ambienti operativi eterogenei, all’interno di uno stesso server fisico, invece di ricreare virtualmente tutta la macchina, ovvero risorse processore, risorse storage, risorse di rete e sistema operativo, come avviene invece quando si utilizza un approccio basato sulle virtual machine. Viene quindi astratto il solo ambiente di esecuzione delle applicazioni con i suoi settaggi fondamentali. I container dunque, eseguono le istruzioni dell’applicazione direttamente sulla CPU, senza richiedere alcun meccanismo di emulazione (come, invece, avviene per le macchine virtuali), permettendo di risparmiare risorse e attuando una virtualizzazione a livello del solo sistema operativo. Similmente alle macchine virtuali, i container forniscono uno spazio isolato e separato per eseguire le applicazioni, pur sfruttando l’hardware condiviso.

Significato e tipologie dei Container in informatica

Il principale fattore di differenziazione è legato al ridotto consumo di risorse. Infatti non dovendo inglobare tutte le risorse di un server, i container sono più “leggeri” delle macchine virtuali e possono essere avviati in tempi molto ridotti. Questo li rende particolarmente adatti alle situazioni in cui il carico di lavoro da sostenere è variabile nel tempo e con picchi difficilmente prevedibili. I container quindi limitano il loro livello di astrazione al solo sistema operativo. C’è da aggiungere inoltre che ogni utente oltre a condividere lo stesso sistema operativo, condivide anche il kernel dello stesso, la connessione di rete e i file di base del sistema. Quindi le istanze vengono eseguite all’interno di uno spazio separato, garantendo così una notevole diminuzione di consumo della CPU e dell’overload associato, che risulta essere un fenomeno tipico dell’esecuzione di più sistemi operativi nelle macchine virtuali. Come per il caso delle macchine virtuali che hanno due tipologie di hypervisor, anche i metodi di gestione dei container si differenziano in due tipologie: Full system Container e Application Container.

Full System Container

Full System Container o più comunemente Operative System Container, condivide il kernel della macchina host, fornendo un isolamento di tipo user namespace. Questo metodo permette alla CPU di partizionare la memoria da allocare in diversi livelli di isolamento. Gli Operative System Container possono essere facilmente comparati agli Hypervisor o alle Virtual Machine in genere. Le applicazioni e le loro librerie possono essere installate allo stesso modo di come avviene in qualunque altro sistema operativo installato su macchina virtuale. Utilizzando i Full System Container, è facile assegnare un indirizzo IP di rete statico o remoto, utilizzare diversi dispositivi di rete, o eseguire comandi di edit sui file in /etc/hosts. Un esempio sono: LXC/LXD, OpenVZ, Oracle Solaris Zone, FreeBSD Jails.

Application Container

Application Container allo stesso modo della precedente tipologia, condivide il kernel del sistema operativo della macchina host con il livello soprastante come mostrato nella figura1.6che mette in paragone gli application container con i full system container. Questa tipologia di Container è stata progettata allo scopo di poter avviare un singolo processo o applicazione all’interno di ogni container, garantendo un certo grado di isolamento, in modo tale che il processo che andrà in esecuzione all’interno di un container, abbia un proprio filesystem privato e non abbia nessuna visibilità di alcun altro processo che si trova in esecuzione sullo stesso server o macchina host. Questo tipo di isolamento viene ottenuto grazie ai namespaces. Con essi è infatti possibile gestire e isolare le risorse linux quali: Inter Process Communications (IPC), configurazione di rete, punto di mount della root, l’albero dei processi, gli utenti e i gruppi di utenti, nonchè la risoluzione del nome di rete. Quindi il vantaggio principale sta nel fatto che con l’utlilizzo dei namespaces, diventa possibile isolare i processi in modo efficace, però come detto in precedenza, ogni processo isolato nel container, condivide con il sistema operativo della macchina host, il kernel dello stesso. Al fine di gestire l’accesso alle risorse hardware, i container utilizzano un ulteriore modulo Kernel chiamato Control Groups, che ha il compito di impostare le priorità e di misurare diversi tipi di risorse tra cui: la memoria, l’utilizzo della CPU e gli accessi al disco. Un esempio di Application Container sono: Docker e Rocket.

Precedente Sviluppo del Software: Perchè utilizzare un Container in azienda Successivo Differenza tra Full System Container e Application Container in informatica

Lascia un commento