Docker su Windows Server come funzionerà?
notiziaQuando Microsoft e Docker annunciarono per la prima volta che la prossima versione di Windows Server avrebbe supportato la sempre più popolare tecnologia di containerizzazione, non ci furono molti dettagli tecnici su ciò che servirà per far funzionare quel lavoro, con domande sollevate su come realmente potrebbe essere Docker nativo.
"Il motore Docker per Windows Server avrà un'efficace parità di funzionalità con il lato Linux," ci ha detto il vice presidente di Docker David Messsina. "Non ci sarà alcuna differenza nell'utilizzo di un contenitore, diverso dal sistema operativo all'interno del contenitore: le API e qualsiasi altra cosa su cui gli sviluppatori di applicazioni devono fare affidamento saranno le stesse".
Ma su Linux, il motore Docker (che esegue i contenitori ed è separato dal client Docker che si usa per gestirli) utilizza funzionalità del kernel come namespace e gruppi C. Windows Server avrà, insieme a un registro, servizi di hosting e liste di controllo di accesso per ogni contenitore?
"Faremo tutto questo" ha confermato il CTO di Azure Mark Russinovich a TechRadar Pro a TechEd Europe, "non ci sarebbe molto da fare se non lo facessimo." La domanda più interessante è come questo si integri con il modello di applicazione di Windows Server e come possa trarre vantaggio da alcuni tipi di virtualizzazione che Microsoft ha già inserito nel suo sistema operativo per la retrocompatibilità.
Approccio diverso
I container Docker adottano un approccio molto diverso dal mettere un intero sistema operativo e una o più applicazioni in una macchina virtuale e farlo funzionare come un singolo sistema che potrebbe o potrebbe non comunicare con altre macchine virtuali attraverso una rete virtuale.
Docker sta sviluppando un carico di lavoro dai microservizi, con un servizio per container. "Questi contenitori possono essere distribuiti", ha spiegato Messina, "possono esserci più copie di ciascuno di questi servizi distribuiti in tutto l'ambiente." Docker consiste nel suddividere le cose in contenitori e quindi collegarli come blocchi Lego per rendere il sistema necessario.
Ma come si adatta a Windows Server? "Una delle domande chiave è fino a che punto possiamo prendere la compatibilità delle app con questo", ha sottolineato Russinovich. "Quando si osserva l'ecosistema di app di Windows è molto complesso e le applicazioni sono molto complesse in termini di dipendenze e dei diversi servizi che il server mette a loro disposizione. Stiamo cercando di capire quali servizi possono essere virtualizzati e quali devono essere virtualizzato in modo che possiamo presentare quella per visualizzazione container dei servizi. Le app più semplici da gestire sono completamente isolate, quindi non sfruttano i servizi di Gestione controllo servizi di Windows. "
Ognuno per il proprio
Ogni contenitore avrà anche bisogno del proprio registro, quindi le applicazioni possono scriverlo, ma è qualcosa che è stato in Windows per diversi anni, come parte del passaggio per impedire agli utenti di accedere come amministratori per installare applicazioni desktop.
"Quello che stiamo facendo è più sofisticato, ma stiamo sfruttando la virtualizzazione del file system e la virtualizzazione del registro che abbiamo realizzato, oltre alla virtualizzazione di rete". Ottenere il modo in cui i servizi sono virtualizzati è la chiave per portare Docker a Windows, Russinovich ha spiegato, e gli spazi dei nomi fanno parte di quel lavoro.
"Ci sono alcune cose che sono uniche quando si tratta di questi contenitori.La virtualizzazione che si vede in genere su Windows è tutto di un livello, ma il modello Docker è virtualizzazione impilata." Ciò significa che un'immagine Docker potrebbe essere solo un riferimento a un'altra immagine, oltre a un codice aggiuntivo.
"Si inizia con un'immagine di base che è un file system virtuale, quindi si sovrappone un'altra immagine con il proprio file system virtuale e che si compone in cima [della prima immagine]. È possibile comporre un numero di questi diversi livelli insieme - questo è il valore del formato di imballaggio Docker.