
Aby w pełni korzystać z projektu na dockerze w WSL, konieczna jest instalacja WSL 2. W momencie pisania tego wpisu można go używać tylko w ramach programu wstępnej oceny Windows (WSL 2 jest dostępna w kompilacjach 18932 i wyższych). Należy również wspomnieć, że konieczna jest wersja Windows 10 Pro do instalacji i konfiguracji Docker Desktop.
Pierwsze kroki
Po przystąpieniu do programu wstępnej oceny i zainstalowaniu aktualizacji należy zainstalować dystrybucję Linux (w tym przykładzie używana jest Ubuntu 18.04) oraz Docker Desktop z WSL 2 Tech Preview:
W obu przypadkach postępujemy zgodnie ze wszystkimi instrukcjami dotyczącymi instalacji i konfiguracji.
Instalacja dystrybucji Ubuntu 18.04
Przed uruchomieniem Ubuntu 18.04 należy włączyć Windows WSL i Windows Virtual Machine Platform, wykonując dwie komendy w PowerShell:
Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Windows-Subsystem-Linux(wymaga ponownego uruchomienia komputera)Enable-WindowsOptionalFeature -Online -FeatureName VirtualMachinePlatform
Następnie należy upewnić się, że używamy WSL v2. W tym celu w terminalu WSL lub PowerShell kolejno wykonujemy komendy:
wsl -l -v— sprawdzamy, jaka wersja jest aktualnie zainstalowana. Jeśli 1, to przechodzimy dalej w liściewsl --set-version ubuntu 18.04 2— aby zaktualizować do wersji 2wsl -s ubuntu 18.04— ustawiamy Ubuntu 18.04 jako dystrybucję domyślną
Teraz można uruchomić Ubuntu 18.04, przeprowadzić konfigurację (podając nazwę użytkownika i hasło).
Instalacja Docker Desktop
W trakcie instalacji postępujemy zgodnie z wskazówkami. Komputer wymusi ponowne uruchomienie po instalacji i przy pierwszym uruchomieniu, aby włączyć Hyper-V (ze względu na wsparcie którego wymagana jest wersja Windows 10 Pro).
WAŻNE! Jeśli Docker Desktop zgłosi blokadę ze strony zapory, przechodzimy do ustawień antywirusowych i wprowadzamy następujące zmiany w zasadach zapory sieciowej (w tym przykładzie używany jest Kaspersky Total Security):
- Przechodzimy do Ustawienia -> Ochrona -> Zapora sieciowa -> Skonfiguruj zasady pakietów -> Local Service (TCP) -> Zmień
- Z listy lokalnych portów usuwamy port 445
- Zapisz
Po uruchomieniu Docker Desktop w jego menu kontekstowym wybieramy opcję WSL 2 Tech Preview.

W otwartym oknie naciskamy przycisk Start.

Teraz docker i docker-compose są dostępne w dystrybucji WSL.
WAŻNE! W zaktualizowanym Docker Desktop teraz zakładka z WSL znajduje się wewnątrz okna ustawień. Tam włączamy wsparcie WSL.

WAŻNE! Oprócz zaznaczenia opcji aktywacji WSL, konieczne jest również włączenie dystrybucji WSL w zakładce Zasoby -> Integracja WSL.

Uruchomienie
Zaskoczeniem były liczne problemy, które pojawiły się podczas próby uruchomienia kontenerów projektów znajdujących się w katalogu użytkownika Windows.
Różnego rodzaju błędy związane z uruchamianiem skryptów bash (które zazwyczaj startują podczas budowy kontenerów w celu instalacji niezbędnych bibliotek i dystrybucji) oraz inne typowe dla rozwoju na Linuxie, skłoniły do przemyślenia umiejscowienia projektów bezpośrednio w katalogu użytkownika Ubuntu 18.04.
.
Z poprzedniego rozwiązania wynika następujący problem: jak pracować z plikami projektu za pomocą IDE zainstalowanego w systemie Windows. Jako „najlepsza praktyka” znalazłem tylko jedną opcję — pracę za pomocą VSCode (chociaż jestem fanem PhpStorm).
Po pobraniu i zainstalowaniu VSCode, koniecznie instalujemy rozszerzenie .
Po zainstalowaniu wspomnianego rozszerzenia wystarczy wykonać polecenie code . w katalogu projektu z uruchomionym VSCode.
W tym przykładzie, aby uzyskać dostęp do kontenerów przez przeglądarkę, potrzebny jest nginx. Zainstalowanie go przez sudo apt-get install nginx okazało się nie takie proste. Najpierw trzeba było zaktualizować dystrybucję WSL, wykonując sudo apt update && sudo apt dist-upgrade, a dopiero po tym rozpocząć instalację nginx.
WAŻNE! Wszystkie lokalne domeny są zapisane nie w pliku /etc/hosts dystrybucji Linux (nawet go tam nie ma), lecz w pliku hosts (zazwyczaj znajdującym się w C:WindowsSystem32driversetchosts) Windows 10.
Źródła
Szczegółowy opis każdego kroku można znaleźć tutaj:
Źródło: habr.com
