Skip to main content

Docker container VS. VMWare


L'avvento di VMWare ha permesso di cambiare radicalmente la struttura fisica delle sale server in giro per il mondo. Erano per lo più popolate da server sovra-dimesionati e "mono-funzionali" : database server, l'application server separati, magari in cluster, e intorno una miriade di server più o meno grandi ognuno dedicato ad una funzione : il server per le telecamere e la video sorveglianza, FTP server, application server di sviluppo e pre-produzione e così via. Insomma, soldi spesi, spazio occupato, poca ottimizzazione dell'uso delle risorse, CPU spesso sottoutilizzate, banchi di RAM comparti e installati perchè "non si sa mai, il server potrebbe averne bisogno" ... per non parlare della corrente per tenere acceso tutto, impianti di climatizzazione per tenere fresco tutto e CO2 a palla. Un bel quadretto, non solo elettrico.

Poi venne VMWare

VMWare ha risolto moltissimi problemi. Ha permesso di installare su un singolo "ferro" (server hardware) più applicazioni e sistemi software in genere. Finalmente non era più necessario acquistare un nuovo server fisico tutte le volte che nasceva una nuova esigenza applicativa. Inoltre era diventato possibile concedere RAM o CPU aggiuntive a server applicativi virtualizzati esistenti, oppure toglierli o modularli meglio su altre macchine virtuali nate sovradimensionate. VMWare ha permesso di sfruttare al meglio i ferri presenti nelle aziende, risparmiando tempo e un sacco di soldi. Tutto perfetto quindi? Non proprio.

Bello ma non troppo

Il problema di VMWare è che ogni macchina virtuale ha bisogno di un suo sistema operativo, quindi CPU e RAM per farlo girare, spazio su disco, qualcuno che lo monitori, che applichi patch, lo aggiorni e in qualche caso serve pure una licenza ufficiale. Tutte rirsorse hardware, umane e finanziarie che potrebbero essere usate meglio. A questo possiamo aggiungere che le macchine virtuali (VMs) non sono velocissime nello startup e migrarle da un hypervisor all'altro non è detto sia una passeggiata di salute.

E vennero in container!

Google ma non solo, anche Microsoft e il mondo Linux, da anni cercano una soluzione ai limiti del mondo delle macchine virtuali. E' da queste ricerche che è nato il concetto di container. In questo modello architetturale, un container è molto simile ad una macchina virtuale che però non ha bisogno di un sistema operativo dedicato. I container sono veloci nello startup e sono ultra-portabili.

I container moderni nascono nell'ecosistema Linux, con sforzi enormi da parte di una grande avrietà di persone e società impegnate in prima linea, come Google, che hanno contribuito allo sviluppo di molte tecnolgie poi confluite nei container. Una di queste tecnologie è il nostro Docker, tecnicamente un "container runtime". E' stato proprio Docker a rendere i container accessibili a tutti, una tecnologia complessa e rivoluzionaria a disposizione delle masse.

Anche Microsoft ha percorso la via dei container, da anni, e li troviamo a disposizione in Windows 10 e Windows Server 2016. Lo strato software che si interpone tra i Windows Container e l'utente è di nuovo Docker, questo rende l'esperianza d'uso dei container nel mondo Windows molto simile a quella nel mondo Linux.

Container Windows e container Linux

I container condividono il kernel del sistema operativo con la macchina (fisica) ospite. Questo significa che una qualsiasi applicazione containerizzata destinata a Linux, non può girare come container su una macchina Windows. E viceversa. Su questo limite la tecnologia è comunque in evoluzione, ed è già possibile in alcuni casi eseguire container Linux su Windows.

Formazione e documentazione

Play with Docker

PWD è un "payground" Docker che consente agli utenti di interagire con i comandi Docker in pochi secondi e cominciare a sperimentare subito. Permette di avere una macchina virtuale Alpine Linux gratuita per 4 ore, accedibile da browser o shell SSH. E' possibile creare ed eseguire container Docker e persino creare cluster in Docker Swarm Mode. PWD include anche un sito di formazione composto da una vasta serie di laboratori Docker e quiz dal livello principiante al livello avanzato (training.play-with-docker.com).

Docker Registry

Uno dei registry più famoso di immagini Docker è Docker Hub. Potete partire da qui per scaricare (pull) l'immagine che vi server nel vostro Docker locale, a quel punto potrete iniziare ad usarla per far partire uno o più container Docker. Esistono altri registry, non è l'unico.