Docker Windows: come avviare le applicazioni nei container

Breve guida a Docker Windows con le indicazioni su come installare applicazioni complesse ed eseguirle all'interno di container separati dal resto del sistema.

In Windows 10 e Windows 11 è possibile semplificare l’esecuzione delle applicazioni più complesse all’interno di speciali container grazie al supporto per Docker.
In un altro articolo abbiamo visto cos’è Docker e come funziona la containerizzazione delle applicazioni.

Per non ripetere concetti già descritti in precedenza ci limitiamo a dire che Docker consente di installare e gestire un ampio ventaglio di applicazioni (basta dare un’occhiata al Docker Hub per rendersi conto di tutte quelle che possono essere utilizzate) che nella maggior parte dei casi sono pronte per essere utilizzate così come vengono proposte e distribuite.

Senza quindi dover creare ogni volta una nuova macchina virtuale, con Docker è possibile gestire più contenitori indipendenti (container appunto) in esecuzione sulla stessa macchina. Il funzionamento di un container non influenzerà in alcun modo quello degli altri.

Windows 10 e 11 semplificano molto l’utilizzo di Docker perché grazie a WSL 2 (Sottosistema Windows per Linux 2) è possibile creare una o più macchine virtuali Linux all’interno delle quali i container possono essere caricati e funzionare in modo del tutto indipendente.

Docker automatizza inoltre il deployment ovvero la distribuzione delle applicazioni: una volta impostato un container secondo le proprie necessità è possibile copiarlo su altri sistemi e usarlo per scopi produttivi.

In ambiente Windows Docker può funzionare appoggiandosi anche alla virtualizzazione di Microsoft Hyper-V: come accennato in precedenza, però, la cosa più semplice è trarre vantaggio dall’integrazione con WSL 2.

Docker in Windows: prerequisiti

Per usare Docker in Windows 10 e 11 è necessario che il supporto per la virtualizzazione in hardware sia abilitato a livello di BIOS UEFI. Premendo la combinazione di tasti CTRL+MAIUSC+ESC e cliccando sulla scheda Prestazioni è fondamentale che accanto alla voce Virtualizzazione in basso a destra sia presente l’indicazione Abilitato.

È inoltre indispensabile usare una versione a 64 bit di Windows 10 oppure di Windows 11 (nel caso di Windows 11 non esistono le versioni a 32 bit) e un sistema con almeno 4 GB di memoria RAM anche se 8 GB dovrebbero essere considerati come il minimo.
Gli altri requisiti per l’installazione di Docker sono consultabili in questa pagina.

Dalla stessa pagina si può scaricare il file Docker Desktop Installer.exe per installare Docker sui sistemi Windows 10 e 11 a 64 bit.

Come installare Docker in Windows

Per installare Docker in Windows 10 e 11 suggeriamo, se non lo si fosse già fatto, di attivare WSL 2 e una macchina virtuale Ubuntu Linux.

Nell’articolo su come eseguire Linux in Windows abbiamo presentato tutti i comandi da usare.
Qui riassumiamo il tutto dicendo che basta digitare cmd nella casella di ricerca di Windows 10 o 11, scegliere Esegui come amministratore quindi scrivere ciò che segue:

wsl --install -d Ubuntu

Dopo l’installazione dei componenti necessari per il funzionamento di WSL 2 e della distribuzione Ubuntu, viene richiesto di inserire un nome utente (Enter new UNIX username) e una password (da confermare due volte) per l’accesso alla macchina virtuale Linux.

Con il comando sudo apt update && sudo apt upgrade -y si possono aggiornare tutti i componenti software della distribuzione Linux.

A questo punto è possibile fare doppio clic sul file Docker Desktop Installer.exe per installare Docker Desktop.

Lasciare entrambe le caselle spuntate e proseguire cliccando OK. Alla comparsa della schermata Installation succeeded fare clic sul pulsante Close and restart per riavviare Windows.

Con un doppio clic sull’icona Docker Desktop si vedranno apparire le condizioni di licenza d’uso: per proseguire basta spuntare la casella I accept the terms e fare clic su Accept.

Alla comparsa della schermata Get started with Docker in a few easy steps si può fare clic sull’ingranaggio in alto a destra quindi su Resources, WSL integration, assicurarsi che la casella Enable integration with my default WSL distro sia attiva e abilitare l’opzione Ubuntu.

Cliccando su Apply & Restart si può legare Docker alla macchina virtuale Ubuntu creata in precedenza con WSL 2. Così facendo i comandi Docker potranno essere eseguiti dall’ambiente virtualizzato.

Premendo Windows+X quindi scegliendo Terminale Windows (Admin) in Windows 11 oppure Windows PowerShell (amministratore) in Windows 10 e digitando docker -v si ottiene subito il numero della versione di Docker appena installata sul sistema.

Digitando però Ubuntu nel menu Start di Windows e scrivendo lo stesso comando docker -v nella finestra del terminale Linux si riceve analoga risposta.

Docker Windows: installare ed eseguire le applicazioni containerizzate

Dalla finestra di PowerShell o da quella di Linux si può quindi impartire il comando seguente:

docker run -d -p 80:80 docker/getting-started

Cosa abbiamo fatto? Abbiamo semplicemente chiesto a Docker di scaricare il container chiamato getting-started (che non è presente in locale) e di esporlo usando la porta TCP 80. Il container getting-started ospita un server web che risponde alle richieste di connessione provenienti dall’esterno.
La sintassi -p 80:80 consente di specificare, rispettivamente, inner port e outer port.
In questo caso facciamo in modo che la porta TCP 80 del container Docker sia collegata alla porta TCP 80 del sistema host.
Usando ad esempio -p 8080:80 la porta TCP 80 sul container sarebbe stata fatta puntare alla TCP 8080 sull’host Docker (informazioni sul networking Docker).

Alla comparsa della finestra del firewall di Windows suggeriamo di spuntare solo la casella Reti private e cliccare su Consenti accesso. È comunque opportuno verificare che il sistema in uso sia effettivamente collegato a un’interfaccia di rete indicata come Rete privata in Windows.
In un altro articolo parliamo delle differenze tra rete pubblica e privata in Windows.

Aprendo il browser preferito e digitando http://localhost nella sua barra degli indirizzi si vedrà subito apparire il tutorial di Docker. Ciò che è interessante rimarcare è che le pagine sono servite da un server web installato in locale, nel container getting-started che abbiamo installato in precedenza.

Tornando in Docker Desktop e cliccando su Skip tutorial si trova un esplicito riferimento al container in esecuzione.
Cliccando sul nome del container si può verificarne l’output restituito (Logs), ispezionare la sua configurazione (Inspect) e verificare le risorse occupate (Stats).

Cliccando su Images è possibile verificare la lista delle immagini scaricate in locale e gestirle come meglio si crede.

Le icone a destra del nome del container (sezione Containers/Apps di Docker Desktop) consentono di aprire il browser, una finestra del terminale per interagire direttamente con la configurazione del container (CLI), arrestare/avviare il container, riavviarlo ed eliminarlo.

Gli utenti di Visual Studio Code possono modificare il funzionamento dei progetti semplicemente digitando code dalla finestra di comando.

Cercando sul Docker Hub le applicazioni che si vogliono installare come container si troveranno le istruzioni per l’installazione dei vari pacchetti usando comandi Docker molto simili a quello presentato in precedenza.

Ad esempio se si volesse provare l’applicazione web per archiviare foto PhotoPrism basta digitare quanto riportato nella pagina per installare PhotoPrism con Docker.

Semplicemente digitando http://localhost:2342 nel browser web, è possibile accedere all’interfaccia di PhotoPrism e accedere con le credenziali admin come username e insecure come password (da modificare subito).

Agendo direttamente sulla configurazione del container Docker via CLI è possibile, come abbiamo visto in altri articoli, richiedere un certificato digitale per attivare l’uso del protocollo HTTPS e modificare la porta TCP da usare specificando ad esempio la 443.

Ti consigliamo anche

Link copiato negli appunti