Installazione e gestione dei container Windows e Linux con Docker Desktop in Windows 10, versione 1909

I Container sono una funzionalità introdotta in Windows 10, versione 1709 che permette di far girare le applicazioni in maniera isolata tra loro e rispetto al sistema operativo. Questo garantisce una maggiore flessibilità nella distribuzione delle applicazioni e maggiore sicurezza

I container aiutano gli amministratori di sistema a creare un’infrastruttura più facile da aggiornare e gestire e che utilizza al meglio le risorse hardware. I professionisti IT possono usare i contenitori per creare ambienti standardizzati per i team di sviluppo e per la produzione. Aiutano invece gli sviluppatori a creare e spedire app in maniera più semplice e rapida. Grazie ai container gli sviluppatori possono creare un’immagine contenitore che viene distribuita in pochi secondi, in modo identico in tutti gli ambienti.

Per installare i container in Windows 10 è necessario utilizzare Windows 10 Pro oppure Windows 10 Enterprise e abilitare la funzionalità di Hyper-V

Collegatevi al sito https://hub.docker.com/editions/community/docker-ce-desktop-windows e dopo esservi registrati scaricare il software Docker Desktop for Windows.

Figura 1: Download del software Docker Desktop for Windows

Procedete all’installazione di Docker Desktop for Windows seguendo le indicazioni del wizard. Impostate il tipo di contenitore predefinito su Windows Containers. Sarà possibile modificarlo in seguito.

Figura 2: Installazione di Docker Desktop for Windows

Figura 3: Configurazione di Docker Desktop for Windows

Figura 4: Unpacking dei files necessary all’installazione di Docker Desktop for Windows

Figura 5: Installazione di Docker for Desktop completata

Terminata l’installazione Docker Desktop si avvierà. Se non avete installato Hyper-V, che è un prerequisito, vi apparirà una finestra che vi inviterà ad installarlo, insieme alla funzionalità Container.

Figura 6: Installazione di Hyper-V e della funzionalità Container obbligatoria

Noterete nell’area di notifiche che sarà apparsa l’icona di Docker, da cui potrete effettuare le successive configurazioni.

Figura 7: Icona di Docker Desktop presente nell’area di notifica

Potete verificare la versione di Docker che avete installato utilizzando la voce About Docker Desktop oppure lanciando il comando

Docker version

Figura 8: Verifica della versione di Docker installata

Maggiori informazioni sulla versione del kernel, il numero delle immagini dei container e la cartella dove verranno salvati i contenitori si possono ottenere lanciando il comando:

docker info

Figura 9: Informazioni sull’installazione di Docker

Immagini di base dei container

Windows offre quattro immagini di base da cui gli utenti possono creare nuovi contenitori:

Tutte le immagini di base dei Windows sono individuabili tramite Docker Hub e vengono servite da MCR.Microsoft.com, il registro dei contenitori Microsoft (Docker Registry).

Per cercare un’immagine si può utilizzare anche il comando

docker search microsoft

Figura 10: Ricerca delle immagini tramite comando docker search

Figura 11: Ricerca delle immagini tramite il Docker Hub

Figura 12: Immagine di Windows IIS

Nel mio caso ho scaricato l’immagine di base con già installato IIS utilizzando il comando:

docker pull mcr.microsoft.com/windows/servercore/iis

Figura 13: Download dell’immagine scelta dal Docker Hub

Per verificare quali immagini di base sono disponibili sulla macchina host potete utilizzare il comando

docker images

Figura 14: verifica delle immagini di base disponibili sulla macchina host

Esecuzione di un container

Dopo aver completato il download dell’immagine, potete lanciare il primo container utilizzando il comando:

docker run -d -p 80:80 mcr.microsoft.com/windows/servercore/iis cmd

Questo comando eseguirà un nuovo container in background e mapperà la porta 80 dell’host con la porta 80 del contenitore appena creato. Tramite il comando ipconfig, verificate l’indirizzo IP assegnato alla macchina host e da un computer nella stessa rete provate a collegarvi tramite browser a quell’indirizzo. Se tutto è stato eseguito correttamente vedrete la pagina di default di IIS.

Figura 15: Esecuzione del primo container sulla macchina host

Figura 16: Pagina di default di IIS, eseguito all’interno del container

Per verificare quali container sono in esecuzione potete utilizzare il comando

docker ps

Figura 17: Verifica dei container in esecuzione nella macchina host

Potete terminare l’esecuzione del container con il comando

docker stop <container id>

Figura 18: Arresto del container

Per visualizzare tutti i container creati sull’host, anche quelli che sono arrestati, potete utilizzare il comando:

docker ps -a

La rimozione di un container potrà essere invece effettuata semplicemente eseguendo il comando

docker rm <container id>

Figura 19: Rimozione di un container

Linux Containers in Windows 10

Windows 10 Fall Creators Update e Windows Server, versione 1709 hanno introdotto la possibilità di eseguire i container Linux in Windows. Ho già avuto modo di scrivere un articolo in proposito, disponibile alla pagina Eseguire i Linux Containers in Windows Server, versione 1709

Da Docker versione 18.03 è possibile passare alla modalità Linux Containers utilizzando l’icona di Docker Desktop che si trova nell’area di notifica.

Figura 20: Passaggio ai Linux Container

Un messaggio vi avviserà che gli eventuali container che sono in esecuzione in quel momento rimarranno attivi, anche se non avrete più la possibilità di poterli gestire fino a quando non tornerete indietro alla modalità Windows Container.

Figura 21: Finestra di avviso del passaggio alla modalità Linux Container

Se aprite l’Hyper-V Manager vi accorgerete che è stata creata una macchina virtuale chiamata DockerDesktopVM all’interno della quale verranno poi eseguiti i Linux Container.

Figura 22: In Hyper-V è stata creata una macchina virtuale chiamata DockerDesktopVM all’interno della quale verranno poi eseguiti i Linux Container

Rilanciando il comando docker info noterete anche che il sistema operativo utilizzato è Linux.

Figura 23: Il sistema operativo utilizzato è Linux

Ci sono diversi container basati su Linux che sono disponibili nel Docker Hub. io ho scelto di scaricare un container con a bordo PowerShell Core utilizzando il comando

docker pull mcr.microsoft.com/powershell

Figura 24: Download del Linux Container

Notate quanto è piccola l’immagine che ha scaricato (pochi mega).

Per verificare quali immagini di base sono disponibili sulla macchina virtuale potete utilizzare il comando

docker images

Figura 25: Immagini Docker disponibili

Per creare un container interattivo partendo dall’immagine appena scaricata ho lanciato il comando

docker run –name PSDemo -it mcr.microsoft.com/powershell pwsh

Figura 26: Esecuzione del Linux Container in Windows 10

Congratulazioni! In questo momento state seguendo l’ultima versione di PowerShell 6 in un container Linux che sta girando su Windows 10!

NOTA: Se eseguite un container Linux e dopo passate ai container Windows, il vostro container Linux continuerà ad essere eseguito ma non potrete gestirlo fino a quando non tornerete indietro alla modalità Linux Container. Potete eseguire contemporaneamente i container Linux e Windows ma potrete soltanto gestirli uno alla volta se utilizzate il meccanismo di scambio.

Per cambiare modalità di container, esattamente come avete fatto prima, utilizzate l’icona di Docker presente nell’area di notifica e scambiate in modalità Windows Container.

Figura 27: Modifica della modalità Container

Le versioni più recenti di Docker per Windows vi permettono di eseguire e gestire contemporaneamente i container Windows e Linux senza utilizzare il meccanismo di scambio. È possibile infatti utilizzare il parametro — platform mentre vi trovate in modalità Windows Container in modo tale da specificare che volete utilizzare i Container Linux. Per eseguire i container in questa modalità è necessario avere la funzionalità Experimental abilitata

Per eseguire un container Linux utilizzate il comando

docker run –platform linux –name PSDemo2 -it mcr.microsoft.com/powershell pwsh

Figura 28: Esecuzione del container Linux in modalità Windows

Se non avete abilitato la funzionalità Experimental il container non potrà essere avviato . Abilitate la funzionalità utilizzando l’icona di Docker presente nell’area di notifica e da Settings scegliete Daemon e mettete il segno di spunta sulla funzionalità Experimental

Figura 29: Abilitazione della funzionalità Experimental per l’esecuzione dei Linux Container in modalità Windows

Rilanciando il comando

docker run –platform linux –name PSDemo2 -it mcr.microsoft.com/powershell pwsh

Questa volta il container verrà eseguito, dopo aver scaricato l’immagine corretta dal Docker Hub perché nella modalità Windows Container non avevate ancora scaricato l’immagine richiesta. Docker provvederà prima scaricare l’immagine del contenitore e successivamente ad eseguirlo .

Figura 30: Esecuzione di un Linux Container in modalità Windows

Conclusioni

In Windows 10 e grazie a Docker
Desktop for Windows è possibile eseguire contemporaneamente container basati su Windows e basati su Linux. Questo apre degli scenari decisamente interessanti e permette di ottimizzare le risorse hardware a disposizione.