Confrontare i contenitori con le macchine virtuali

Completato

La virtualizzazione hardware ha reso possibile l'esecuzione simultanea di più istanze isolate di sistemi operativi nello stesso hardware fisico. I contenitori rappresentano la fase successiva della virtualizzazione delle risorse di calcolo.

La virtualizzazione basata su contenitori consente di virtualizzare il sistema operativo. Questo approccio consente di eseguire più applicazioni all'interno della stessa istanza di un sistema operativo, mantenendo al contempo l'isolamento tra le applicazioni. I contenitori all'interno di una macchina virtuale forniscono funzionalità simili a quelle delle macchine virtuali all'interno di un server fisico.

Informazioni utili su contenitori e macchine virtuali

Per comprendere meglio la virtualizzazione basata su contenitori, ora verranno confrontati i contenitori e le macchine virtuali.

Confronta Contenitori Macchine virtuali
Isolamento Un contenitore offre in genere un isolamento leggero dall'host e da altri contenitori, ma non offre un limite di sicurezza avanzato di livello analogo a quello delle macchine virtuali. Le macchine virtuali offrono un isolamento completo dal sistema operativo host e dalle altre macchine virtuali. Questa separazione è utile quando è fondamentale un limite di sicurezza sicuro, ad esempio l'hosting di app di aziende concorrenti nello stesso server o cluster.
Sistema operativo I contenitori eseguono la parte della modalità utente di un sistema operativo e possono essere adattati in modo da contenere solo i servizi necessari per l'app. Questo approccio consente di usare un minor numero di risorse di sistema. Le macchine virtuali eseguono un sistema operativo completo, incluso il kernel, richiedendo quindi più risorse di sistema (CPU, memoria e spazio di archiviazione).
Distribuzione È possibile distribuire singoli contenitori usando Docker tramite la riga di comando. Per distribuire più contenitori è possibile usare un agente di orchestrazione, ad esempio il servizio Azure Kubernetes. È possibile distribuire singole macchine virtuali usando Windows Admin Center o la console di gestione di Hyper-V. È possibile distribuire più macchine virtuali usando PowerShell o System Center Virtual Machine Manager.
Archiviazione permanente I contenitori usano 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. Le macchine virtuali usano 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.
Tolleranza di errore In caso di errore di un nodo del cluster, tutti i contenitori in esecuzione sul nodo vengono ricreati rapidamente dall'agente di orchestrazione in un altro nodo del cluster. 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.

Aspetti da considerare quando si usano i contenitori

I contenitori offrono diversi vantaggi rispetto alle macchine fisiche e virtuali. Esaminare i vantaggi seguenti e valutare come implementare i contenitori per le app interne per la propria azienda.

  • Valutare flessibilità e pianificazione. Maggiore flessibilità e velocità durante lo sviluppo e condivisione del codice dell'applicazione in contenitori.

  • Valutare il test. Scegliere i contenitori per la configurazione per consentire test semplificati delle app.

  • Valutare la distribuzione dell'app. Implementare i contenitori per la distribuzione semplificata e accelerata delle app.

  • Valutare la densità dei carichi di lavoro. Supporto di una maggiore densità dei carichi di lavoro e miglioramento dell'utilizzo delle risorse usando i contenitori.

Informazioni sulle immagini dei contenitori

Tutti i contenitori vengono creati a partire da specifiche immagini. Un'immagine del contenitore è un pacchetto di software eseguibile autonomo e leggero, che incapsula tutto il necessario per l'esecuzione di un'applicazione. Include i componenti seguenti:

  • Codice: Codice sorgente dell'applicazione.
  • Runtime: Ambiente necessario per eseguire l'applicazione.
  • Strumenti di sistema: Utilità necessarie per il funzionamento dell'applicazione.
  • Librerie di sistema: Librerie condivise usate dall'applicazione.
  • Impostazioni: Parametri di configurazione specifici dell'applicazione.

Quando si crea, l'immagine del contenitore diventa un'unità portabile che può essere eseguita in modo coerente in ambienti di elaborazione diversi. Queste immagini costituiscono i blocchi predefiniti per i contenitori, ovvero istanze di tali immagini in esecuzione nel runtime.