Wprowadzając Windows Subsystem for Linux (WSL), Microsoft dał programistom możliwość uruchamiania środowiska GNU/Linux bezpośrednio w systemie Windows, bez modyfikacji, bez narzutu maszyny wirtualnej. Jest to świetne rozwiązanie, ponieważ wielu deweloperów używa jednego systemu do programowania, a drugiego do rozrywki.
WSL jest wciąż rozwijany, ale obecnie nadaje się do nowoczesnych zastosowań. rozwój oprogramowaniazarówno w pierwszej, jak i drugiej wersji. Przeglądając problemy i pytania zgłaszane w Internecie, większość z nich wydaje się dotyczyć integracji WSL z Dockerem, zwłaszcza jeśli chodzi o aktualizację z WSL 1 do WSL 2.
Ten artykuł rozwieje wszelkie niejasności i pomoże bezboleśnie przejść przez ten proces. Jeśli nie masz WSL 1 i chcesz mieć WSL 2 z Dockerem, możesz przejść od razu do ostatniego rozdziału.
Co zyskasz?
- Najnowsze stabilne jądro Linux (dostrojone przez Microsoft). WSL 1 ma interfejs jądra kompatybilny z Linuksem bez jądra Linuksa kod.
- Zwiększona wydajność IO plików. Do 20x szybciej w porównaniu do WSL 1 podczas rozpakowywania spakowanego pliku tarball, około 2-5x szybciej podczas używania git clone
, npm install
i cmake
w różnych projektach.
- Pełna kompatybilność z wywołaniami systemowymi. Pliki binarne Linuksa używają wywołań systemowych do wykonywania wielu funkcji, takich jak dostęp do plików, żądanie pamięci, tworzenie procesów i wiele innych. Podczas gdy WSL 1 korzystał z warstwy translacji zbudowanej przez WSL zespółWSL 2 zawiera własne jądro Linux z pełną kompatybilnością wywołań systemowych.
- Pliki przechowywane na natywnej partycji ext4 na dysku wirtualnym.
- Bardzo łatwy sposób na integrację z Docker.
Myślę, że dla większości użytkowników wydajność IO plików i łatwa integracja z dockerem to wystarczające powody.
Idziemy!
Zakładam, że masz najnowszą stabilną wersję systemu Windows 10 Pro. Na dzień dzisiejszy jest to wydanie 1909.
Dołącz do insiderów Windows
Obecnie WSL 2 jest dostępny tylko dla systemu Windows 10 w powolnym pierścieniu insiderów. Z tego co wiem, stabilna wersja powinna być dostępna w maju 2020 roku (wydanie 20H1). Powolny pierścień jest dość bezpiecznym rozwiązaniem dla użytkowników, którzy chcą mieć nowe funkcje nieco wcześniej, już wstępnie przetestowane przez użytkowników szybkiego pierścienia. Powolny pierścień otrzymuje aktualizacje systemu raz lub dwa razy w miesiącu. O zmianach w insiders release można przeczytać w dokumencie Microsoftu o nazwie Flight Hub.
Aby dołączyć, wystarczy śledzić oficjalną stronę Microsoft przewodnik. Jest to bardzo proste i zajmuje około 15 minut bez utraty jakichkolwiek danych osobowych.
Aktualizacja WSL 1 do WSL 2
Postępuj zgodnie z oficjalnym przewodnik. Jest to również bardzo proste, kilka poleceń powłoki i gotowe! W zależności od tego, jak rozbudowany był Linux pod WSL 1, może to zająć trochę czasu. Niestety, Microsoft nie umieścił paska postępu ani informacji o wymaganym czasie, więc po prostu bądź cierpliwy.
Sprzątanie
Jest to najważniejsza część dla prawidłowej współpracy WSL 2 i Dockera. Po aktualizacji do WSL 2 wielu użytkowników próbuje zmusić swoją wersję Dockera do współpracy, nie zdając sobie sprawy, że zespół Dockera, specjalnie dla WSL 2, przygotował wydanie, które zrobi wszystko za nas. Jest to ostatnie wydanie wersji Docker Edge (ich nazwa beta) - "Docker Desktop WSL 2 backend". Ta wersja, 2.1.7.0, jest dobrze dopracowana i jest kandydatem do nadchodzącego stabilnego wydania.
Użytkownicy, którzy nie mieli WSL 1 lub właśnie zainstalowali nową wersję WSL 2, mają szczęście i mogą od razu przejść do ostatniego rozdziału.
Jeśli nie wyczyściłeś swojego Dockera (w ogóle lub poprawnie) i nie zainstalowałeś odpowiedniej wersji Dockera dla WSL 2, możesz napotkać kilka typowych błędów, np, Nie można połączyć się z demonem Docker pod adresem tcp://localhost:2375", "Czy demon Docker jest uruchomiony?
itp. W większości przypadków stracisz czas, jeśli nie wiesz, że musisz przyjąć nowe podejście, próbując rozwiązać te błędy. Aby to zrobić, należy najpierw całkowicie usunąć Dockera z WSL i Windows, co nie jest oczywistym krokiem.
Najczęstszym przykładem nieusuniętych pozostałości jest stare podejście Dockera do ustawiania zmiennej środowiskowej DOCKER_HOST=tcp://localhost:2375
w ramach WSL 1 do współpracy z opcją Windows Docker Wystawienie demona na tcp://localhost:2375 bez TLS
.
Jak całkowicie usunąć Dockera z WSL (Ubuntu)?
- Jako oficjalny Docker dokumenty powiedzieć:
sudo apt-get remove docker docker-engine docker.io containerd runc
Z pewnością można dodać do tej listy docker-ce
i docker-ce-cli
.
- Zidentyfikuj wszystkie posiadane pakiety docker za pomocą
dpkg -l | grep -i docker
i usunąć, jeśli nadal istnieją.
- Usunąć wszystkie pozostałości:
sudo rm -rf /var/lib/docker /etc/docker /etc/apparmor.d/docker /var/run/docker.sock /usr/local/bin/docker-compose /etc/docker
sudo groupdel docker ~/.docker
- Ten krok jest przeznaczony dla zaawansowanych użytkowników, więc bądź ostrożny. Prawdopodobnie nie musisz go wykonywać.
Znajdź wszystkie doker
i usuń te, których jesteś pewien.
sudo find / -name "*docker*"
- Sprawdź zawartość wszystkich poniższych plików pod kątem
doker
wystąpienia takie jak np. zmienna środowiskowa DOCKER_HOST=tcp://localhost:2375
.
Pliki te można edytować za pomocą edytora Nano, nano ~/.bashrc
lub Visual Studio Code, kod ~/.bashrc
.
~/.bashrc
~/.bash_aliases
~/.bash_profile
~/.bash_login
~/.profile
/etc/bash.bashrc
/etc/profile
Jak całkowicie usunąć Dockera z systemu Windows?
- Odinstaluj w normalny sposób w systemie Windows
Aplikacje i funkcje
panel.
- Usuń wszystko poniżej, jeśli istnieje:
C:Program FilesDocker
C:ProgramDataDockerDesktop
C:Users[USERNAME].docker
C:Users[USERNAME]AppDataLocalDocker
C:Users[USERNAME]AppDataRoamingDocker
C:Users[USERNAME]AppDataRoamingDocker Desktop
Co dalej?
Zainstaluj najnowszą wersję Docker Desktop Edge ze strony tutaj i postępuj zgodnie z instrukcjami podanymi na oficjalnej stronie dokumenty. Wszystko sprowadza się do kilku kliknięć.
Jeśli wszystko pójdzie dobrze, powinieneś otrzymać dane wyjściowe z wsl -l -v
w ten sposób:
NAZWA STAN WERSJA
Ubuntu-18.04 Działająca 2
docker-desktop Uruchomiono 2
docker-desktop-data Uruchomiono 2
To wszystko. Docker stworzył własne kontenery WSL docker-desktop
i docker-desktop-data
. Niektóre z dostępnych samouczków lub porad mogą być mylące, ponieważ tym razem nie należy instalować ani konfigurować niczego związanego z Dockerem w ramach dystrybucji WSL Linux. Należy o tym pamiętać. Po wyczyszczeniu powinien od razu dobrze działać.
Dodatkowo...
Konfiguracja WSL 2 z Docker może być bezbolesnym procesem z kilkoma prostymi krokami. Rozpocznij od aktualizacji listy pakietów przy użyciu polecenia "sudo apt-get update", aby upewnić się, że masz najnowsze informacje o wersji. Rozwiąż wszelkie brakujące zależności za pomocą "sudo apt-get install -y build-essential" dla płynnej instalacji. Instalacja Silnik Docker z "sudo apt-get install -y docker-engine", aby bez wysiłku budować, uruchamiać i zarządzać kontenerami. Uruchom "sudo docker run", a następnie nazwę obrazu, aby uruchomić kontenery. Aby zoptymalizować środowisko, okresowo uruchamiaj "sudo docker system prune", aby usunąć nieużywane kontenery i zwolnić miejsce na dysku. Dzięki tym krokom można cieszyć się płynną integracją WSL 2 i Docker w celu wydajnej konteneryzacji w przepływie pracy programistycznej.