Uno dei framework più importanti che si sta imponendo per la distribuzione delle applicazioni è senza dubbio Docker.
Docker, in poche parole, rappresenta l’evoluzione delle Virtual Machine per la distribuzione delle applicazioni in maniera semplice è isolata. Fino a pochi anni fa, il modo più semplice per integrare su una sola macchina più applicazioni era quello di inserire ogni applicazione in una macchina virtuale, in modo da controllare in maniera precisa le interazioni tra le varie applicazioni. Il problema di questo approccio è dato dal fatto di dover avere in ogni macchina virtuale una copia del sistema operativo (SO) da utilizzare per l’applicazione, anche se ridotto all’osso, anche se il semplice Kernel. Con Docker, invece, le applicazioni vengono distribuite in “Containers” che possono essere viste come macchine virtuali senza SO. I servizi necessari a far girare effettivamente l’applicazione sono forniti dal Kernel della macchina host. Il Container Docker in pratica è costituito dall’applicazione vera e propria, più gli strati dell’SO originale per il quale l’applicazione è destinata, per far sembrare all’applicazione di avere a disposizione i servizi dell’SO.
Originariamente i Containers furono sviluppati per Linux, cioè Linux come SO guest. Poi venne la versione per Windows. Le versioni avanzate dei server Docker, possono far girare indifferentemente Containers Linux e Windows. La versione libera Docker per Windows, dedicata agli sviluppatori, permette di sviluppare container Linux o container Windows, ma non allo stesso momento, bisogna passare da un ambiente all’altro. La cosa positiva che una volta avviato un container, ad esempio Linux, si può passare allo sviluppo/debug di un container Windows senza interrompere l’esecuzione del container Linux già avviato. Ad esempio si può avviare un container Linux con SQL Server 2019, per poi passare all’assemblamento di un container Windows di una app che utilizza quel server.
Su Windows, per eseguire i container Linux, viene avviata una VM Linux, che fa da ponte. Una volta era una macchina VirtualBox, ora è una macchina Hyper-V. Ma adesso grazie al rilascio di WSL (Windows Subsystem for Linux) e con il prossimo rilascio di WSL 2, Docker per Windows nella versione beta offre la possibilità di utilizzare WSL per eseguire i container Linux. I risultati sembrano essere incoraggianti, i miglioramenti di velocità si notano a occhio nudo, il container Linux SQL Server 2019 ci mette pochi istanti a partire, contro qualche secondo della macchina Hyper-V. Di contro è più complicato, al momento, settare da Docker le risorse da dedicare al sottosistema Linux, bisogna ricorrere al comando WSL e al file di configurazione .wslconfig.
WSL2 per ora è in fase di test nel Fast ring, ed in fase di installazione di Docker EDGE ci potrebbero essere dei problemi, come descritto qui.