Contenitori e macchine virtuali
Si applica a: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
Questo argomento illustra alcune delle principali analogie e differenze tra contenitori e macchine virtuali e quando è consigliabile usarli. I contenitori e le macchine virtuali hanno infatti i propri usi, molte distribuzioni di contenitori usano macchine virtuali come sistema operativo host anziché essere eseguite direttamente nell'hardware, soprattutto quando si eseguono contenitori nel cloud.
Per una panoramica dei contenitori, vedere Windows e contenitori.
Architettura dei contenitori
Un contenitore è un silo isolato e leggero per l'esecuzione di un'applicazione nel sistema operativo host. I contenitori si basano sul kernel del sistema operativo host (che può essere considerato come l'impianto idraulico sepolto del sistema operativo) e contengono solo app e alcune API e servizi leggeri del sistema operativo eseguiti in modalità utente, come illustrato in questo diagramma.
Architettura delle macchine virtuali
A differenza dei contenitori, le macchine virtuali eseguono un sistema operativo completo, incluso il proprio kernel, come illustrato in questo diagramma.
Contenitori e macchine virtuali
La tabella seguente illustra alcune analogie e differenze di queste tecnologie complementari.
Caratteristica | Macchina virtuale | Contenitore |
---|---|---|
Isolamento | Fornisce l'isolamento completo dal sistema operativo host e da altre macchine virtuali. Ciò è utile quando un limite di sicurezza forte è fondamentale, ad esempio l'hosting di app provenienti da aziende concorrenti nello stesso server o cluster. | In genere fornisce un isolamento leggero dall'host e da altri contenitori, ma non fornisce un limite di sicurezza sicuro come una macchina virtuale. È possibile aumentare la sicurezza usando Hyper-V modalità di isolamento per isolare ogni contenitore in una macchina virtuale leggera. |
Sistema operativo | Esegue un sistema operativo completo, incluso il kernel, richiedendo così più risorse di sistema (CPU, memoria e archiviazione). | Esegue la parte della modalità utente di un sistema operativo e può essere personalizzata in modo da contenere solo i servizi necessari per l'app, usando un minor numero di risorse di sistema. |
Compatibilità ospite | Esegue solo qualsiasi sistema operativo all'interno della macchina virtuale. | Viene eseguito nella stessa versione del sistema operativo dell'host (Hyper-V isolamento consente di eseguire versioni precedenti dello stesso sistema operativo in un ambiente di macchine virtuali leggero). |
Implementazione | Distribuire singole macchine virtuali usando Windows Admin Center o Hyper-V Manager; distribuire più macchine virtuali usando PowerShell o System Center Virtual Machine Manager. | Distribuire singoli contenitori usando Docker tramite la riga di comando; distribuire più contenitori usando un agente di orchestrazione, ad esempio il servizio Azure Kubernetes. |
Aggiornamenti e aggiornamenti del sistema operativo | Scaricare e installare gli aggiornamenti del sistema operativo in ogni macchina virtuale. L'installazione di una nuova versione del sistema operativo richiede l'aggiornamento o la creazione di una macchina virtuale completamente nuova. Questo può richiedere molto tempo, soprattutto se si dispone di molte macchine virtuali. | L'aggiornamento o l'aggiornamento dei file del sistema operativo all'interno di un contenitore è lo stesso:
|
Archiviazione permanente | Usare un disco rigido virtuale (VHD) per l'archiviazione locale per una singola macchina virtuale o una condivisione file SMB per l'archiviazione condivisa da più server. | Usare Dischi di Azure per l'archiviazione locale per un singolo nodo o File di Azure (condivisioni SMB) per l'archiviazione condivisa da più nodi o server. |
Bilanciamento del carico | Il bilanciamento del carico delle macchine virtuali sposta le macchine virtuali in esecuzione in altri server in un cluster di failover. | I contenitori stessi non si spostano; Un agente di orchestrazione può invece avviare o arrestare automaticamente i contenitori nei nodi del cluster per gestire le modifiche nel carico e nella disponibilità. |
Tolleranza ai guasti | Le macchine virtuali possono eseguire il failover in un altro server in un cluster, con il riavvio del sistema operativo della macchina virtuale nel nuovo server. | Se un nodo del cluster ha esito negativo, tutti i contenitori in esecuzione su di esso vengono rapidamente ricreati dall'agente di orchestrazione in un altro nodo del cluster. |
Networking | Usa schede di rete virtuali. | Usa una visualizzazione isolata di una scheda di rete virtuale, fornendo un po' meno di virtualizzazione, ovvero il firewall dell'host viene condiviso con i contenitori, mentre si usano meno risorse. Per altre informazioni, vedere rete dei contenitori windows. |