Docker będzie wspierał podsystemy Windowsa do Linuksa (WSL 2)
Docker opublikował szczegóły na temat tego, jak będzie wyglądać jego technologia kontenerowa dla programistów przyzwyczajonych do pracy w systemie Windows, po wydaniu podsystemu Windows dla systemu Linuksa 2 (WSL 2), który niedługo ma wyjść z wersji podglądowej do stabilnej.
WSL 2 ma inne podejście niż obecne WSL. Zamiast przekierowywać wywołania systemowe w celu uruchomienia binariów Linuksa, WSL 2 uruchamia jądro Linuksa w maszynie wirtualnej Hyper-V, ale z integracją z systemem operacyjnym Windows, więc nadal zachowując większość funkcji WSL 1.0.
Zgodność z Linuksem w WSL 1.0 była jednak niewystarczająca do obsługi kontenerów Dockera. W WSL 2 ma się to zmienić.
W ostatnim wpisie na blogu Dockera możemy przeczytać:
Zastąpimy maszynę wirtualną Hyper-V, której obecnie używamy, pakietem integracyjnym WSL 2. Zapewni on te same funkcje, co obecny VM Docker Desktop: konfiguracja Kubernetesa jednym kliknięciem, automatyczne aktualizacje, przejrzysta konfiguracja proxy HTTP, dostęp do daemona z Windows, przezroczyste łączenie plików Windows i wiele więcej.
Docker dodał, że:
Z integracją WSL 2 nadal będziesz miał taką samą bezproblemową integrację z Windowsem, ale programy Linuksowe działające w WSL również będą mogły to zrobić.
Inne zalety to dynamiczna alokacja pamięci w WSL 2, umożliwiająca Dockerowi bardziej efektywne wykorzystanie zasobów, znacznie szybsze uruchamianie, co oznacza, że daemon Dockera nie musi być uruchomiony, gdy nie jest używany i bardziej niezawodny dostęp kontenerów do plików po stronie Windowsa.
Docker przewiduje, że programiści będą używać rozszerzenia „Remote to WSL” w Visual Studio Code, aby edytować kod w systemie Windows podczas interakcji z Linuksem przez terminal VS Code.
Docker może naprawdę wiele na tym zyskać, ponieważ dużo mniej zasobów pójdzie w optymalizację działania w systemie Windows, jednocześnie oferując programistom więcej korzyści.
WSL2 bez wątpienia będzie lepszym rozwiązaniem niż jedynka, chociażby pod kątem tworzenia aplikacji Linuksa w systemie Windows, ale jednak nie bez pewnych wad. Uruchamianie Linuksa w maszynie wirtualnej, w przeciwieństwie do przekierowywania wywołań systemowych, jest lepsze dla zgodności, ale z natury gorsze dla integracji. Jednym z aspektów tego jest to, że w WSL 2 wydajność I/O dla plików w maszynie wirtualnej Linux jest znacznie szybsza, ale wydajność I/O między Linuksem a hostem jest gorsza. Innym jest to, że WSL 2 nie ma dostępu do portów szeregowych lub USB.
Microsoft zapewne wkłada wysiłek w promowanie rozwoju aplikacji linuksowych w systemie Windows nie bez przyczyny. Bez wątpienia chcą promować korzystanie z platformy Azure, gdzie Microsoft może hostować zarówno aplikacje Linuksowe, jak i Windowsowe, maksymalizując swoje korzyści, jednocześnie sprawiając wrażenie firmy otwartej na współpracę i chcącej jedynie pomóc programistom. Moim zdaniem warto jednak zachować wobec intencji Microsoftu trochę rezerwy.