
Per un utilizzo completo del progetto su docker in WSL, è necessario installare WSL 2. Al momento della scrittura, il suo utilizzo è possibile solo partecipando al programma di anteprima di Windows (WSL 2 è disponibile nelle build 18932 e superiori). Vale anche la pena menzionare che è necessaria una versione di Windows 10 Pro per installare e configurare Docker Desktop.
Primi passi
Dopo essere entrati nel programma di anteprima e aver installato gli aggiornamenti, è necessario installare una distribuzione 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 della distribuzione Ubuntu 18.04
Prima di avviare Ubuntu 18.04, è necessario abilitare Windows WSL e Windows Virtual Machine Platform eseguendo due comandi in PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux(richiederà il riavvio del computer)Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Successivamente, è necessario assicurarsi di utilizzare WSL v2. Per fare ciò, nel terminale WSL o PowerShell, eseguiamo consecutivamente i comandi:
wsl -l -v— controlliamo quale versione è attualmente installata. Se è 1, procediamo con l'elencowsl --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, configurare (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 (il quale è necessario per l'ultima versione di Windows 10 Pro).
Attenzione! 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 utilizziamo Kaspersky Total Security):
- Andiamo su Impostazioni -> Protezione -> Firewall -> Configura regole del pacchetto -> Local Service (TCP) -> Modifica
- Dalla lista delle porte locali eliminiamo la porta 445
- Salva
Dopo aver avviato Docker Desktop, dal suo menu di contesto selezioniamo l'opzione WSL 2 Tech Preview.

Nella finestra che si apre, facciamo clic sul pulsante Inizia.

Ora docker e docker-compose sono disponibili all'interno della distribuzione WSL.
Attenzione! Nella nuova versione di Docker Desktop, è ora disponibile una scheda per WSL all'interno della finestra delle impostazioni. Qui si attiva il supporto per WSL.

Attenzione! Oltre a selezionare l'attivazione di WSL, è necessario attivare la propria distribuzione WSL nella scheda Risorse -> Integrazione WSL.

Avvio
È stata una sorpresa scoprire i numerosi problemi che sono emersi nel tentativo di avviare i contenitori dei progetti situati nella directory utente di Windows.
Vari errori riguardanti l'esecuzione di script bash (che di solito si avviano durante la costruzione dei contenitori per installare le librerie e le distribuzioni necessarie) e altre cose comuni nello sviluppo su Linux, hanno portato a riflettere sulla possibilità di posizionare i progetti direttamente nella directory utente di Ubuntu 18.04.
.
Dalla soluzione del problema precedente scaturisce la questione di come lavorare con i file del progetto tramite un IDE installato su Windows. Come 'best practice', ho trovato per me un'unica opzione: lavorare tramite VSCode (anche se sono un fan di PhpStorm).
Dopo aver scaricato e installato VSCode, è fondamentale installare l'estensione .
Dopo aver installato l'estensione sopra menzionata, è sufficiente eseguire il comando code . nella directory del progetto quando VSCode è in esecuzione.
In questo esempio, per accedere ai container tramite il browser è necessario nginx. Installalo tramite sudo apt-get install nginx non è stato così semplice. Per cominciare, è stato necessario aggiornare la distribuzione WSL eseguendo sudo apt update && sudo apt dist-upgrade, e solo dopo questo avviare l'installazione di nginx.
Attenzione! Tutti i domini locali non sono registrati nel file /etc/hosts della distribuzione Linux (non esiste nemmeno), ma nel file hosts (solitamente situato in C:\Windows\System32\drivers\etc\hosts) di Windows 10.
Fonti
Una descrizione più dettagliata di ogni passaggio può essere trovata qui:
Fonte: habr.com
