La vir­tua­liz­za­zio­ne ha ri­vo­lu­zio­na­to il campo dell’In­for­ma­tion Tech­no­lo­gy grazie alla di­stri­bu­zio­ne delle risorse di una macchina fisica su più macchine virtuali (VM) tramite la vir­tua­liz­za­zio­ne hardware. In questo caso si emulano i com­po­nen­ti hardware, in modo da mettere a di­spo­si­zio­ne diversi server virtuali con un proprio sistema operativo basati su un sistema host comune. Spesso si utilizza questa struttura per lo sviluppo di software, nel caso in cui ci sia bisogno di ef­fet­tua­re più test. Inoltre la vir­tua­liz­za­zio­ne è alla base di diversi pacchetti di hosting offerti dai provider, che si basano su una tec­no­lo­gia Cloud.

Un’al­ter­na­ti­va alla vir­tua­liz­za­zio­ne hardware è data dalla vir­tua­liz­za­zio­ne del sistema operativo, anche chiamata OS-level o container-level. In questo caso le diverse ap­pli­ca­zio­ni server si rea­liz­za­no in ambienti virtuali isolati, chiamati con­te­ni­to­ri (dall’inglese “container”) che pre­sen­ta­no lo stesso sistema operativo: si parla perciò di vir­tua­liz­za­zio­ne basata su con­te­ni­to­ri. Proprio come le macchine virtuali, anche i con­te­ni­to­ri offrono la pos­si­bi­li­tà di uti­liz­za­re diverse ap­pli­ca­zio­ni, con requisiti dif­fe­ren­ti, si­mul­ta­nea­men­te sulla stessa macchina fisica. Visto la mancanza di un proprio sistema operativo, il processo di vir­tua­liz­za­zio­ne nei con­te­ni­to­ri si con­trad­di­stin­gue per la facile in­stal­la­zio­ne e un overhead minore.

I con­te­ni­to­ri non sono però una nuova scoperta, ma la tec­no­lo­gia impiegata è stata portata alla ribalta da progetti open source come Docker e rkt di CoreOS.

Che cosa sono i con­te­ni­to­ri?

La vir­tua­liz­za­zio­ne hardware si basa su un hy­per­vi­sor che si appoggia sull’hardware del sistema host e che lo di­stri­bui­sce par­zial­men­te ai singoli sistemi operativi, mentre nella vir­tua­liz­za­zio­ne basata su con­te­ni­to­ri non viene avviato alcun sistema operativo ag­giun­ti­vo. Invece il sistema operativo comune a tutti i con­te­ni­to­ri si limita a creare delle istanze isolate di se stesso e pertanto viene messo a di­spo­si­zio­ne su ogni con­te­ni­to­re un ambiente di runtime completo.

I con­te­ni­to­ri possono essere con­si­de­ra­ti come delle ap­pli­ca­zio­ni per il server. Per in­stal­la­re un software, viene caricato il ri­spet­ti­vo con­te­ni­to­re con tutti i file necessari in un formato portatile, chiamato immagine, ed eseguito nell’ambiente virtuale. Un’im­ple­men­ta­zio­ne per questi con­te­ni­to­ri è sup­por­ta­ta da tutti i sistemi operativi: su Windows è ge­ne­ral­men­te usato il software Virtuozzo svi­lup­pa­to dalla Parallels, su FreeBSD ci sono le jails e Linux supporta invece OpenVZ e LXC. Questo tipo di vir­tua­liz­za­zio­ne è diventata però più popolare solo con lo sviluppo di piat­ta­for­me come Docker o rkt, che hanno aggiunto funzioni es­sen­zia­li a questo tipo di tec­no­lo­gia per fa­ci­li­ta­re l’utilizzo dei con­te­ni­to­ri.

Excursus: Docker e il ritorno della tec­no­lo­gia a container

È ine­vi­ta­bi­le im­bat­ter­si in Docker, quando si parla di vir­tua­liz­za­zio­ne basata su con­te­ni­to­ri. Grazie ad un corretto impiego delle strategie di marketing, nel giro di pochi anni il progetto open source è diventato l’esempio più co­no­sciu­to di tec­no­lo­gia a container. Docker è un tool con un’in­ter­fac­cia a riga di comando per avviare, fermare e gestire i con­te­ni­to­ri, che si basa su tecniche Linux come Cgroups e Na­me­spa­ces per di­stri­bui­re le risorse su singoli con­te­ni­to­ri. Ini­zial­men­te è stata uti­liz­za­ta l’in­ter­fac­cia LXC del kernel Linux, mentre ora i con­te­ni­to­ri di Docker usano un’in­ter­fac­cia di pro­gram­ma­zio­ne chiamata Lib­con­tai­ner.

Una funzione prin­ci­pa­le della piat­ta­for­ma Docker è il Docker Hub, un servizio online che raccoglie le immagini di Docker, in modo da poterle con­di­vi­de­re con altri utenti. Per gli utenti Linux l’in­stal­la­zio­ne di un con­te­ni­to­re già pre­im­po­sta­to è facile come ef­fet­tua­re un download dall’app store. Le ap­pli­ca­zio­ni cor­ri­spon­den­ti vengono scaricate di­ret­ta­men­te da Docker Hub grazie alle istru­zio­ni immesse nella riga di comando ed eseguite sul proprio sistema.

In con­trap­po­si­zio­ne a Docker si pone rkt che supporta sia immagini di Docker sia il proprio formato App Container Images (ACI).

Managed Nextcloud di IONOS Cloud
Lavora con il tuo team sul cloud
  • Massima sicurezza dei tuoi dati
  • Strumenti di col­la­bo­ra­zio­ne per lavorare in team
  • Ag­gior­na­men­ti au­to­ma­ti­ci

Ca­rat­te­ri­sti­che prin­ci­pa­li della vir­tua­liz­za­zio­ne basata su con­te­ni­to­ri

Grazie ai con­te­ni­to­ri sono messi a di­spo­si­zio­ne degli am­mi­ni­stra­to­ri tutti i dati necessari per il fun­zio­na­men­to di un’ap­pli­ca­zio­ne server in un unico pacchetto, sem­pli­fi­can­do così l’in­stal­la­zio­ne e il fun­zio­na­men­to di programmi complessi per il server. I vantaggi ri­guar­da­no so­prat­tut­to la gestione e l’au­to­ma­tiz­za­zio­ne delle ap­pli­ca­zio­ni basate su con­te­ni­to­ri.

  • In­stal­la­zio­ne sem­pli­fi­ca­ta: i con­te­ni­to­ri si basano su immagini, cioè delle ri­pro­du­zio­ni portatili di un con­te­ni­to­re che comprende un unico programma server e tutti i com­po­nen­ti necessari come librerie, programmi di aiuto o file di con­fi­gu­ra­zio­ne. Così si com­pen­sa­no le dif­fe­ren­ze tra le diverse di­stri­bu­zio­ni dei sistemi operativi. L’in­stal­la­zio­ne di un’ap­pli­ca­zio­ne simile si riduce pertanto all’in­se­ri­men­to di una sola riga di comando.
  • Mul­ti­piat­ta­for­ma: le immagini si possono portare da un sistema ad un altro e sono mul­ti­piat­ta­for­ma, cioè possono essere in­stal­la­te su qualsiasi piat­ta­for­ma. Per avviare un con­te­ni­to­re da un’immagine, serve solo un sistema operativo con una piat­ta­for­ma cor­ri­spon­den­te.
  • Minore impiego di risorse in tempi ridotti: una struttura simile occupa circa 100 MB e si configura in pochi minuti, se si ricorre a Linux e a Docker. Ma gli am­mi­ni­stra­to­ri di sistema non godono solo di una più rapida in­stal­la­zio­ne: mentre nel caso di una vir­tua­liz­za­zio­ne hardware si assiste ad un calo della per­for­man­ce per via degli hy­per­vi­sor e dell’as­se­gna­zio­ne di un sistema operativo ag­giun­ti­vo, le soluzioni basate su con­te­ni­to­ri riducono i tempi di avvio al minimo. Infatti avviare le macchine virtuali può ri­chie­de­re diversi minuti, mentre con i con­te­ni­to­ri le ap­pli­ca­zio­ni per il server sono subito a di­spo­si­zio­ne.
  • Ap­pli­ca­zio­ni isolate: ogni programma in un con­te­ni­to­re funziona in maniera isolata dagli altri basati sullo stesso sistema operativo. Così le ap­pli­ca­zio­ni con diversi requisiti si possono gestire si­mul­ta­nea­men­te e con il minimo sforzo.
  • Am­mi­ni­stra­zio­ne unica e au­to­ma­tiz­za­ta: visto che la gestione di tutti i con­te­ni­to­ri avviene tramite una piat­ta­for­ma con gli stessi strumenti come Docker, è possibile au­to­ma­tiz­za­re le ap­pli­ca­zio­ni nel centro di ela­bo­ra­zio­ne dati. Le soluzioni basate su con­te­ni­to­ri sono par­ti­co­lar­men­te adatte per le ar­chi­tet­tu­re server, in cui i singoli com­po­nen­ti sono di­stri­bui­ti su più server, in modo da bi­lan­cia­re il carico delle diverse istanze. Per questo motivo la piat­ta­for­ma Docker mette a di­spo­si­zio­ne degli strumenti per con­fi­gu­ra­re gli au­to­ma­ti­smi, con­sen­ten­do ad esempio di avviare au­to­ma­ti­ca­men­te delle nuove istanze nei momenti di maggior carico. Un software simile a Docker, sempre basato su questa tec­no­lo­gia, è Ku­ber­ne­tes, offerto da Google per gestire un cluster di con­te­ni­to­ri.

Quanto sono sicure le soluzioni basate su con­te­ni­to­ri?

Ri­nun­cian­do a sistemi operativi separati, la vir­tua­liz­za­zio­ne basata su con­te­ni­to­ri è più con­ve­nien­te in termini di per­for­man­ce, ma deve fare i conti con un minore livello di sicurezza. Nor­mal­men­te le vul­ne­ra­bi­li­tà di un sistema operativo nella vir­tua­liz­za­zio­ne hardware ri­guar­da­no solo una macchina virtuale, mentre nel caso della vir­tua­liz­za­zio­ne del sistema operativo rimangono coinvolti tutti i con­te­ni­to­ri. Pertanto i con­te­ni­to­ri non sono protetti come le macchine virtuali con un proprio sistema operativo e se si attacca l’hy­per­vi­sor, ne con­se­guo­no danni seri. Ci sono però meno rischi di attacco rispetto ad esempio al kernel di Linux, vista la minore com­ples­si­tà. I con­te­ni­to­ri rap­pre­sen­ta­no così un’al­ter­na­ti­va alla vir­tua­liz­za­zio­ne hardware, ma sono ancora lontani dal poterla so­sti­tui­re com­ple­ta­men­te.

Vai al menu prin­ci­pa­le