Jak rozwiązać problem „Docker Desktop – nieoczekiwany błąd WSL” w systemie Windows

Radzenie sobie z „nieoczekiwanym błędem WSL” w Docker Desktop może być dość irytujące. Zwłaszcza jeśli korzystasz z Dockera w pracy, majstrowanie przy konfiguracjach, uprawnieniach lub brakujących komponentach WSL (Windows Subsystem for Linux) może przysporzyć Ci mnóstwo kłopotów. To dość uciążliwe, ponieważ czasami wydaje się, że naprawa to gra prób i błędów. Ale hej, istnieją solidne sposoby na rozwiązanie problemów i przywrócenie płynnego działania Dockera.

Jak naprawić „Nieoczekiwany błąd WSL” w Docker Desktop

Metoda 1. Zainstaluj WSL, jeśli go brakuje

Zasadniczo Docker w dużym stopniu opiera się na WSL2. Jeśli WSL nie jest poprawnie zainstalowany lub skonfigurowany, Docker może zgłosić ten błąd. Dlatego pierwszą rzeczą, którą należy sprawdzić, jest to, czy WSL istnieje i jest poprawnie zainstalowany.

  • Naciśnij klawisz Windows + S, aby otworzyć wyszukiwarkę.
  • Wpisz „Wiersz polecenia” i kliknij prawym przyciskiem myszy, aby wybrać opcję „Uruchom jako administrator”. Tak, musisz to zrobić z uprawnieniami administratora.
  • W terminalu wpisz wsl --installi naciśnij Enter. To polecenie uruchamia instalację WSL 2, jeśli nie jest jeszcze zainstalowany. W niektórych kompilacjach automatycznie instaluje również aktualizację jądra systemu Windows — upewnij się więc, że system jest w pełni zaktualizowany.
  • Po zakończeniu tej operacji należy ponownie uruchomić komputer.

Pomaga to upewnić się, że WSL jest skonfigurowany od podstaw, zwłaszcza jeśli w ogóle go brakowało. Upewnij się tylko, że masz zainstalowane najnowsze aktualizacje systemu Windows, ponieważ starsze wersje mogą kolidować.

Metoda 2. Zaktualizuj WSL do najnowszej wersji

Następnie WSL musi być aktualny. Nieaktualne wersje mogą powodować problemy ze zgodnością, które prowadzą do błędów. Można to zrobić z poziomu wiersza poleceń administratora lub okna programu PowerShell.

  • Naciśnij klawisz Windows + R, następnie wpisz cmd i kliknij, Ctrl + Shift + Enteraby uzyskać uprawnienia administratora.
  • Potwierdź wyświetlony monit.
  • Wpisz wsl --updatei naciśnij Enter. Spowoduje to pobranie najnowszej aktualizacji WSL od firmy Microsoft.
  • Następnie uruchom ponownie. Czasami ten krok naprawia niezgodności jądra lub błędy.

Tę metodę należy zastosować, jeśli używana wersja WSL jest nieaktualna lub zawiera błędy, co może prowadzić do błędów w Docker Desktop podczas próby uruchomienia WSL2.

Metoda 3. Modyfikacja pliku Settings.json w Dockerze

Czasami wewnętrzne konfiguracje Dockera bywają przekłamane, zwłaszcza plik ustawień JSON. Warto to sprawdzić, jeśli inne poprawki nie przynoszą efektu.

  • Otwórz Eksplorator plików za pomocą klawisza Windows + E.
  • Wklej %Appdata%\Docker w pasku adresu i naciśnij Enter.
  • Znajdź i kliknij dwukrotnie plik settings.json. Jeśli go tam nie ma, Docker może być uszkodzony i konieczna może być ponowna instalacja.
  • Szukaj linii:
    • "integratedWslDistros" : [ ]
    • "enableIntegrationWithDefaultWslDistro" : false
  • W razie potrzeby dostosuj te ustawienia. Na przykład ustawienie "enableIntegrationWithDefaultWslDistro"truemoże zwiększyć kompatybilność Dockera”.Zapisz zmiany i uruchom ponownie Dockera.

Upewnienie się, że konfiguracje JSON Dockera są zgodne z konfiguracją WSL, często rozwiązuje problem. Z doświadczenia wiem, że błędnie skonfigurowane ustawienia mogą łatwo powodować generowanie przez Dockera dziwnych błędów dotyczących integracji WSL.

Metoda 4. Przełączenie wiersza poleceń do trybu starszego

To sprytny trik. Okazuje się, że niektórzy użytkownicy zauważają, że Docker narzeka mniej, gdy wiersz poleceń jest ustawiony w trybie Legacy, zwłaszcza gdy domyślna konsola działa niestabilnie.

  • Otwórz wyszukiwarkę, wpisz Wiersz polecenia, kliknij prawym przyciskiem myszy i wybierz Uruchom jako administrator.
  • Kliknij prawym przyciskiem myszy górny pasek i wybierz Właściwości.
  • Przejdź do zakładki Opcje.

  • Zaznacz opcję Użyj starszej konsoli.
  • Kliknij OK i ponownie uruchom Dockera. Czasami ta minimalna zmiana stabilizuje interakcje WSL.

Z tego co mówią użytkownicy, w niektórych konfiguracjach starsza konsola po prostu lepiej współpracuje z komponentami WSL Dockera, chociaż jest trochę przestarzała.

Metoda 5. Zresetuj ustawienia sieciowe za pomocą resetu Winsock

Problemy z siecią lub nieprawidłowo działające stosy sieciowe mogą zakłócać łączność WSL, powodując błędy Dockera. Zresetowanie konfiguracji Winsock i sieci może pomóc rozwiązać ten problem.

  • Naciśnij klawisz Windows + R, wpisz cmd, a następnie naciśnij Ctrl + Shift + Enter.
  • Zezwól na monit UAC, jeśli się pojawi.
  • Uruchom te dwa polecenia jedno po drugim:
    • netsh int ip reset
    • netsh winsock reset
  • Po wykonaniu tej czynności zrestartuj system. To dość chaotyczne, ale czasami niestabilność sieci powoduje błędy WSL i Dockera, więc to rozwiązanie usuwa potencjalny problem.

W niektórych konfiguracjach ten krok rozwiązał problemy z błędami WSL związanymi z siecią lub zawieszaniem się Dockera.

Metoda 6. Całkowita ponowna instalacja WSL i powiązanych funkcji systemu Windows

Jeśli nic innego nie pomoże, całkowite usunięcie i ponowna instalacja WSL oraz opcjonalnych funkcji może być ostatecznością. Owszem, jest to bardziej skomplikowane, ale czasami system Windows po prostu się zaśmieca lub psuje.

  • Naciśnij klawisz Windows + I, aby otworzyć Ustawienia.
  • Przejdź do Aplikacji, a następnie kliknij Zainstalowane aplikacje.
  • Znajdź Podsystem Windows dla systemu Linux i kliknij na wielokropek ( ) znajdujący się obok niego.
  • Wybierz Odinstaluj. Powtórz tę czynność dla aplikacji takich jak Ubuntu lub innych dystrybucji Linuksa, które zainstalowałeś.
  • Następnie przejdź do sekcji Funkcje opcjonalne (znajdziesz ją, wyszukując u góry w Ustawieniach), po czym kliknij Więcej funkcji systemu Windows u dołu.
  • Odznacz Podsystem Windows dla systemu Linux i platformę maszyn wirtualnych.
  • Kliknij OK i uruchom ponownie.
  • Po ponownym uruchomieniu wróć i ponownie włącz te funkcje. Uruchom ponownie.
  • Na koniec zainstaluj ponownie WSL za pomocą wiersza poleceńwsl --install — tak, ponowne przeprowadzenie pierwotnej instalacji od podstaw czasami usuwa wszystkie błędne stany.

To w pewnym sensie rozwiązanie drakońskie, ale w przypadku niektórych maszyn to jedyny sposób na powrót do stanu pierwotnego.

Streszczenie

  • Sprawdź, czy WSL został zainstalowany prawidłowo.
  • Zaktualizuj WSL do najnowszej wersji.
  • Sprawdź i dostosuj ustawienia JSON Dockera.
  • W razie potrzeby przełącz wiersz poleceń do trybu starszego.
  • Zresetuj ustawienia sieciowe — zresetuj Winsock i IP.
  • Jeśli wszystkie inne metody zawiodą, zainstaluj WSL ponownie od podstaw.

Podsumowanie

Tego typu błąd nie jest przyjemny, absolutnie. Zazwyczaj jest to brakujący komponent lub niezgodność konfiguracji. Jego naprawa zazwyczaj polega na zainstalowaniu, zaktualizowaniu lub zresetowaniu fragmentów ustawień WSL i Dockera. Czasami jedynym rozwiązaniem jest całkowite wyczyszczenie i ponowna instalacja. Mimo to, gdy wszystko jest już w porządku, Docker zazwyczaj znowu działa. Oby to komuś pomogło uniknąć wielogodzinnego łamania sobie głowy. Działało w niektórych konfiguracjach — mam nadzieję, że zadziała również w Twojej.