Accedi / Registrati Account

Container

Container Linux e macchine virtuali

Jump to section

container Linux® e le macchine virtuali (VM) sono ambienti di elaborazione che combinano vari componenti IT e li isolano dal resto del sistema. Le differenze tra container Linux e macchine virtuali sono da ricercare nella loro scalabilità e portabilità.

Quali sono le principali differenze tra container e VM?

  • La dimensione dei container è in genere calcolata nell'ordine dei megabyte. Di solito contengono soltanto un'app e tutti i file necessari per eseguirla; vengono utilizzati per raggruppare singole funzioni che eseguono attività specifiche, i cosiddetti microservizi. Essendo ottimizzati per natura, i container e il sistema operativo che condividono sono facili da spostare tra diversi ambienti.
  • La dimensione delle macchine virtuali è invece calcolata in gigabyte. Poiché contengono il proprio sistema operativo, le VM possono eseguire contemporaneamente più funzioni a elevato utilizzo di risorse. Il numero di risorse sempre maggiore a disposizione delle VM consente loro di estrarre, suddividere, duplicare ed emulare interi server, sistemi operativi, desktop, database e reti

Oltre alle specificità tecnologiche di ciascuna soluzione, confrontare container e VM significa individuare le differenze tra processi innovativi e architetture IT convenzionali. 

I processi innovativi (sviluppo cloud native, flussi CI/CD e DevOps) si concretizzano nei container, che consentono di suddividere i carichi di lavoro nelle loro più piccole unità costitutive, ovvero una funzione o un microservizio, raggruppate in modo ottimale. Più team possono perciò lavorare su singole parti di un'app o di un servizio, senza interrompere o ostacolare l'esecuzione del codice contenuto in altri container.

Le architetture IT convenzionali, preesistenti e monolitiche, integrano ogni componente del carico di lavoro in un unico file di grandi dimensioni, indivisibile, che deve necessariamente essere raggruppato come singola unità in un ambiente di grandi dimensioni, in genere una VM. Fino a qualche tempo fa, l'approccio più diffuso prevedeva l'esecuzione di un'intera app in una VM, malgrado la presenza di tutto il codice e delle relative dipendenze in un'unica posizione generasse VM voluminose, con tempi di aggiornamento lunghi, soggette a errori e a tempi di inattività prolungati.

Come scegliere tra container e macchine virtuali?

La scelta della soluzione più adatta dipenderà dalle esigenze, ad esempio un'istanza di un componente che può essere facilmente spostato (container) oppure un'allocazione semi-permanente di risorse IT personalizzate.

I vantaggi dei container

Leggeri e di poco ingombro per natura, i container possono essere facilmente spostati tra sistemi bare metal e ambienti di cloud pubblico, privato, ibrido e multicloud. I container sono inoltre l'ambiente ideale per la distribuzione delle applicazioni cloud native, ovvero raccolte di microservizi progettate per offrire esperienze di gestione e sviluppo automatizzate in ambienti di cloud pubblico, privato, ibrido e multicloud. Le app cloud native accelerano la realizzazione di nuove app, l'ottimizzazione di quelle esistenti e la connessione tra le due. I container devono essere compatibili con il sistema operativo sottostante. Rispetto ai container, le VM sono indicate per: 

  • Creare app cloud native
  • Raggruppare microservizi
  • Adottare procedure DevOps o CI/CD
  • Spostare progetti IT scalabili in un contesto IT diverso che condivide lo stesso sistema operativo

I vantaggi delle macchine virtuali

Le VM possono eseguire molte più operazioni rispetto a un singolo container, ed è per questo che sono state a lungo impiegate per raggruppare i tradizionali carichi di lavoro monolitici. Tuttavia, questa funzionalità estesa e la dipendenza da sistema operativo, applicazione e librerie ne limita fortemente la portabilità. Rispetto ai container, le VM sono indicate per: 

  • Ospitare carichi di lavoro tradizionali, preesistenti e monolitici
  • Isolare cicli di sviluppo ad alto rischio
  • Eseguire il provisioning delle risorse dell'infrastruttura quali reti, server e big data
  • Eseguire un diverso sistema operativo in un altro sistema operativo, ad esempio Unix su Linux

Come funzionano le macchine virtuali e i container?

Caratteristiche della virtualizzazione

Un software, definito hypervisor, separa le risorse dalle rispettive macchine fisiche, così che possano essere suddivise ed eseguite su specifiche VM. Quando un utente invia un'istruzione VM con una richiesta di ulteriori risorse rispetto all'ambiente fisico, l'hypervisor inoltra la richiesta al sistema fisico e memorizza le modifiche nella cache. Per aspetto e comportamento, le VM sono simili ai server fisici. Questo può incrementare gli inconvenienti dovuti alle dipendenze delle applicazioni e all'elevato utilizzo di risorse dei sistemi operativi, che non è quasi mai necessario per l'esecuzione di singole applicazioni e di microservizi.

Caratteristiche dei container

Un container raggruppa in un'immagine un microservizio o un'app e tutto il necessario per la sua esecuzione. L'immagine è un file basato su codice che include tutte le librerie e le dipendenze. Possiamo paragonare questi file all'installazione di una distribuzione Linux, poiché includono pacchetti RPM e file di configurazione. Data la loro ridotta dimensione, in genere sono presenti centinaia di container a basso livello di accoppiamento; le attività di provisioning e gestione vengono perciò affidate a piattaforme di orchestrazione dei container come Red Hat OpenShift e Kubernetes.

Container Linux e soluzioni di virtualizzazione Red Hat

Red Hat supporta la virtualizzazione e lo sviluppo dei container da lungo tempo. Contribuiamo alle community KVM (Kernel-based Virtual Machine) e oVirt sin dalla loro fondazione; siamo inoltre il secondo contributore ai codebase Docker e Kubernetes. Abbiamo investito nel futuro di queste due tecnologie, impegnandoci nella virtualizzazione container native, in KubeVirt e nelle infrastrutture iperconvergenti, per integrare al meglio i container e le VM nell'ambito dello stesso sistema IT.

Gli elementi essenziali per gestire container e VM

Red Hat OpenShift Logo

Sviluppa, distribuisci e gestisci i tuoi container in qualsiasi ambiente.

Distribuisci decine o centinaia di VM con un hypervisor capace di gestirle e una piattaforma di gestione semplificata.