
Per un uso completo del progetto su Docker in WSL è necessaria l'installazione di WSL 2. Al momento della scrittura di questa nota, il suo utilizzo è possibile solo nell'ambito della partecipazione al programma di valutazione anticipata di Windows (WSL 2 è disponibile nei build 18932 e superiori). È inoltre importante menzionare che è necessaria una versione di Windows 10 Pro per l'installazione e la configurazione di Docker Desktop.
Primi passi
Dopo aver aderito al programma di valutazione anticipata e aver installato gli aggiornamenti, è necessario installare il pacchetto Linux (in questo esempio si utilizza Ubuntu 18.04) e Docker Desktop con WSL 2 Tech Preview:
In entrambi i casi seguiamo tutte le istruzioni per l'installazione e la configurazione.
Installazione del pacchetto Ubuntu 18.04
Prima di avviare Ubuntu 18.04, è necessario abilitare WSL di Windows e la Piattaforma di Macchine Virtuali di Windows eseguendo due comandi in PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux(richiederà un riavvio del computer)Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Dopo dobbiamo assicurarci di utilizzare WSL v2. A tal fine, nel terminale WSL o in PowerShell eseguiamo consecutivamente i comandi:
wsl -l -v— controlliamo quale versione è attualmente installata. Se è 1, procediamo con il seguente passaggiowsl --set-version ubuntu 18.04 2— per l'aggiornamento alla versione 2wsl -s ubuntu 18.04— impostiamo Ubuntu 18.04 come distribuzione predefinita
Ora possiamo avviare Ubuntu 18.04 e completare la configurazione (specificare nome utente e password).
Installazione di Docker Desktop
Durante il processo di installazione seguiamo le istruzioni. Il computer richiederà un riavvio dopo l'installazione e al primo avvio per abilitare Hyper-V (per il quale è necessaria una versione di Windows 10 Pro).
Importante! Se Docker Desktop segnala un blocco da parte del firewall, andiamo nelle impostazioni dell'antivirus e apportiamo le seguenti modifiche alle regole del firewall (in questo esempio si utilizza Kaspersky Total Security):
- Andiamo a Impostazioni -> Protezione -> Firewall -> Configurare le regole di pacchetto -> Local Service (TCP) -> Modifica
- Dalla lista delle porte locali, rimuoviamo la porta 445
- Salva
Dopo aver avviato Docker Desktop, nel suo menu contestuale selezioniamo l'opzione WSL 2 Tech Preview.

Nella finestra aperta, premiamo il pulsante Avvia.

Ora docker e docker-compose sono disponibili all'interno della distribuzione WSL.
Importante! Nella versione aggiornata di Docker Desktop, ora c'è una scheda con WSL all'interno della finestra di impostazioni. Lì viene attivato il supporto per WSL.

Importante! Oltre alla spunta di attivazione di WSL, è necessario attivare la tua distribuzione WSL nella scheda Risorse->Integrazione WSL.

Avvio
È stata una sorpresa riscontrare i molti problemi che sono emersi nel tentativo di avviare i contenitori dei progetti situati nella directory dell'utente Windows.
Errori di vario genere legati all'esecuzione di script bash (che di solito iniziano durante la costruzione dei contenitori per installare le librerie e le distribuzioni necessarie) e altre questioni comuni nello sviluppo su Linux mi hanno fatto riflettere sulla possibilità di posizionare i progetti direttamente nella directory utente di Ubuntu 18.04.
.
Dalla soluzione del problema precedente scaturisce il seguente: come lavorare con i file di progetto tramite un IDE installato su Windows. Come "best practice", ho trovato solo un'opzione possibile: lavorare tramite VSCode (nonostante sia un fan di PhpStorm).
Dopo aver scaricato e installato VSCode, è fondamentale installare l'estensione .
Dopo aver installato l'estensione sopra citata, è sufficiente eseguire il comando code . nella directory del progetto mentre VSCode è in esecuzione.
In questo esempio, per accedere ai contenitori tramite il browser è necessario nginx. Installarlo tramite sudo apt-get install nginx si è rivelato non così semplice. Per iniziare, è stato necessario aggiornare la distribuzione WSL eseguendo sudo apt update && sudo apt dist-upgrade, e solo dopo questo è stato possibile avviare l'installazione di nginx.
Importante! Tutti i domini locali non vengono scritti nel file /etc/hosts della distribuzione Linux (che non esiste nemmeno), ma nel file hosts (solitamente situato in C:WindowsSystem32driversetchosts) di Windows 10.
Fonti
Una descrizione più dettagliata di ogni passo può essere trovata qui:
Fonte: habr.com
