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.