Windows e i contenitori

Si applica a: Windows Server 2022, Windows Server 2019, Windows Server 2016

I contenitori sono una tecnologia per la creazione di pacchetti e l'esecuzione di applicazioni di Windows e Linux in ambienti di diverso tipo, in locale e nel cloud. Questa tecnologia offre un ambiente semplice e isolato che semplifica lo sviluppo, la distribuzione e la gestione delle app. Grazie alla rapidità di avvio e arresto, i contenitori rappresentano la soluzione ideale per le app che devono adattarsi rapidamente alle continue variazioni della domanda. La semplicità dei contenitori fa di loro anche un utile strumento per aumentare la densità e l'utilizzo dell'infrastruttura.

Immagine che illustra come i contenitori possono essere eseguiti nel cloud o in locale per il supporto di app monolitiche o microservizi scritti in quasi tutti i linguaggi.

Per visualizzare una roadmap delle funzionalità pianificate e attualmente disponibili, vedere la roadmap dei contenitori di Windows Server. Vedere anche Eventi per visualizzare presentazioni video recenti e post di blog per i contenitori di Windows.

Ecosistema dei contenitori Microsoft

Microsoft offre una serie di strumenti e piattaforme che facilitano lo sviluppo e la distribuzione di app nei contenitori consentendoti di effettuare queste operazioni:

Come funzionano i contenitori

Un contenitore è un pacchetto 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), come illustrato nel diagramma seguente.

Diagramma dell'architettura che mostra la modalità di esecuzione dei contenitori sopra il kernel

Sebben il contenitore condivida il kernel del sistema operativo host, non ottiene l'accesso illimitato a esso. Al contrario, il contenitore ottiene una visualizzazione isolata, e in alcuni casi virtualizzata, del sistema. Ad esempio, un contenitore può accedere a una versione virtualizzata del file system e del registro, ma tutte le modifiche influiscono solo sul contenitore e vengono eliminate quando questo si ferma. Per salvare i dati, il contenitore può montare una risorsa di archiviazione permanente, ad esempio un disco di Azure o una condivisione file (incluso File di Azure).

Un contenitore si basa sul kernel, ma il kernel non offre tutte le API e i servizi che un'app deve eseguire. La maggior parte di questi viene resa disponibile da file di sistema (librerie) che vengono eseguiti prima del kernel in modalità utente. Poiché il contenitore è isolato dall'ambiente in modalità utente dell'host, deve avere la propria copia di questi file di sistema in modalità utente, che vengono raccolti in un pacchetto noto come immagine di base. L'immagine di base funge da livello di base su cui viene creato il contenitore, garantendogli servizi del sistema operativo non offerti dal kernel. Informazioni più dettagliate sulle immagini di contenitore sono riportate più avanti.

Confronto tra contenitori e macchine virtuali

A differenza di un contenitore, una macchina virtuale esegue un sistema operativo completo, incluso il relativo kernel, come illustrato in questo diagramma.

Diagramma dell'architettura che mostra come le macchine virtuali eseguono un sistema operativo completo accanto al sistema operativo host

I contenitori e le macchine virtuali hanno ciascuno un uso specifico. Molte distribuzioni di contenitori usano infatti macchine virtuali come sistema operativo host anziché essere eseguite direttamente sull'hardware, soprattutto nel caso di contenitori nel cloud.

Per altre informazioni sulle analogie e sulle differenze di queste tecnologie complementari, vedi Confronto tra contenitori e macchine virtuali.

Immagini del contenitore

Tutti i contenitori vengono creati a partire da specifiche immagini. Un'immagine del contenitore è un bundle di file organizzati in uno stack di livelli che si trovano nel computer locale o in un registro contenitori remoto. L'immagine del contenitore è costituita dai file del sistema operativo in modalità utente necessari per supportare l'app, i runtime o le dipendenze dell'app e qualsiasi altro file di configurazione varie necessario per l'esecuzione corretta dell'app.

Microsoft offre diverse immagini, denominate immagini di base, che puoi usare come punto di partenza per creare un'immagine di contenitore personalizzata:

  • Windows: l'immagine che contiene il set completo di API e servizi di sistema Windows (esclusi i ruoli del server).
  • Windows Server : contiene il set completo di API e servizi di sistema di Windows.
  • Windows Server Core: un'immagine più piccola che contiene un subset delle API di Windows Server, ovvero la versione completa di .NET Framework. Include anche la maggior parte dei ruoli del server, ad esempio Il server fax non è incluso.
  • Nano Server : l'immagine di Windows Server più piccola e include il supporto per le API .NET Core e alcuni ruoli del server.

Come indicato in precedenza, le immagini di contenitore sono costituite da una serie di livelli. Ogni livello contiene un set di file che, quando sovrapposti, rappresentano l'immagine del contenitore. A causa della natura a più livelli dei contenitori, non è necessario definire sempre come destinazione un'immagine di base per creare un contenitore di Windows. In alternativa, è possibile usare un'altra immagine che contiene già il framework desiderato. Il team di .NET, ad esempio, pubblica un'immagine .NET Core che contiene il runtime di .NET Core. In questo modo, evita agli utenti la necessità di duplicare il processo di installazione di .NET Core, grazie alla possibilità di riutilizzare i livelli di questa immagine di contenitore. L'immagine di .NET Core è di per sé basata su Nano Server.

Per informazioni dettagliate, vedi Immagini di base dei contenitori.

Utenti dei contenitori

Contenitori per gli sviluppatori

I contenitori consentono agli sviluppatori di creare e distribuire più velocemente app di qualità superiore. Con i contenitori, gli sviluppatori possono creare un'immagine distribuibile in pochi secondi, in modo identico su più ambienti. I contenitori offrono un meccanismo semplice per condividere il codice tra i team e per avviare un ambiente di sviluppo senza alcun impatto sul file system host.

I contenitori sono portabili e versatili, possono eseguire app scritte in qualsiasi linguaggio e sono compatibili con qualsiasi computer che esegue Windows 10, versione 1607 o successiva, oppure Windows Server 2016 o versione successiva. Gli sviluppatori possono creare e testare un contenitore in locale sul proprio laptop o desktop e quindi distribuire la stessa immagine di contenitore nel cloud privato della propria azienda, in un cloud pubblico o a un provider di servizi. La flessibilità naturale dei contenitori supporta i modelli di sviluppo delle nuove app negli ambienti cloud virtualizzati, su larga scala. Il vantaggio più utile per gli sviluppatori è forse la possibilità di isolare l'ambiente in modo che l'app ottenga sempre la versione delle librerie specificate, evitando conflitti con le dipendenze.

Contenitori per i professionisti IT

I contenitori consentono agli amministratori di creare un'infrastruttura più facile da aggiornare e gestire, in grado di sfruttare in modo ottimale le risorse hardware. I professionisti IT possono usare i contenitori per offrire ambienti standardizzati per i team di sviluppo, QA e produzione. Usando i contenitori, gli amministratori di sistema eliminano le differenze nelle installazioni dei sistemi operativi e nell'infrastruttura sottostante.

È anche possibile usare la modalità interattiva dei contenitori per eseguire istanze in conflitto di uno strumento da riga di comando nello stesso sistema.

Orchestrazione dei contenitori

Gli agenti di orchestrazione costituiscono una parte essenziale dell'infrastruttura durante la configurazione di un ambiente basato su contenitori. Anche se è possibile gestire alcuni contenitori manualmente con Docker e Windows, le app usano spesso cinque, dieci o persino centinaia di contenitori, ed è in questo caso che entrano in gioco gli agenti di orchestrazione.

Questi agenti sono stati creati per aiutare a gestire i contenitori su larga scala in fase di produzione. Gli agenti di orchestrazione offrono funzionalità per:

Gli agenti di orchestrazione consentono di aumentare le app in contenitori su larga scala, fornendo funzionalità per:

  • Distribuzione su larga scala
  • Pianificazione del carico di lavoro
  • Monitoraggio dell’integrità
  • Failover in caso di errore di un nodo
  • Scalabilità delle prestazioni
  • Rete
  • Individuazione dei servizi
  • Coordinamento degli aggiornamenti di app
  • Affinità dei nodi del cluster

Con i contenitori di Windows sono disponibili diversi agenti di orchestrazione. Ecco le opzioni offerte da Microsoft:

Provare i contenitori in Windows

Per iniziare a usare i contenitori in Windows Server o Windows 10, vedi gli argomenti seguenti:

Per informazioni su come decidere quali servizi di Azure sono adatti al proprio scenario, vedi Servizi contenitore di Azure e Scegliere i servizi di Azure da usare per ospitare un'applicazione.

Risorse

Per visualizzare le risorse per l'uso dei contenitori di Windows Server:

  • Per i problemi correnti e gli aggiornamenti pianificati delle funzionalità, vedere il repository GitHub dei contenitori di Windows.

  • Consultare il blog: Blog sui contenitori di Windows.

  • Per contattare il team dei contenitori di Windows Server, inviare un messaggio di posta elettronica ai clienti dei contenitori di Windows.