Hoe begin je met het gebruik van Docker op Windows (WSL2) zonder Docker Desktop?

Docker Engine installeren in WSL2 zonder Docker Desktop — een praktische puinhoop

Dus je probeert Docker Desktop op Windows over te slaan en Docker direct in WSL2 te draaien? Ja, dat kan, maar het is niet bepaald een vlekkeloze ervaring. Je bespaart wat overhead en krijgt mogelijk betere prestaties als alles binnen Linux blijft, maar er zijn wel een paar aandachtspunten – zoals ervoor zorgen dat systemd goed werkt, dat de machtigingen kloppen en dat de resources correct geconfigureerd zijn. Als dat eenmaal werkt, kun je Docker-commando’s rechtstreeks vanuit je WSL-terminal uitvoeren, wat best wel gaaf is als het eenmaal draait. Houd er wel rekening mee dat dit geen perfecte oplossing is – soms heb je misschien wat extra aanpassingen nodig en werkt niet alles meteen. Maar als je het niet erg vindt om wat te experimenteren, lees dan hier in het kort hoe je het voor elkaar krijgt.

Het doel is in principe om Docker Engine rechtstreeks in je WSL Linux-distributie te installeren en ervoor te zorgen dat het automatisch opstart en toegang heeft tot je resources. Dit kan handig zijn als je de extra belasting van RAM, schijf en CPU door Docker Desktop wilt vermijden en je vertrouwd bent met Linux-commando’s. Bij sommige configuraties is het grootste probleem ervoor zorgen dat systemd correct werkt, omdat WSL dit niet altijd standaard inschakelt. Maar goed, misschien krijg je het wel aan de praat, waarna je je containers gemakkelijk vanuit de Windows- opdrachtprompt of PowerShell kunt uitvoeren. Lieve Linux, je doet een beetje vreemd, maar het is de moeite waard als je een lichtgewicht Docker-stack wilt. Laten we nu de stappen bekijken.

Hoe installeer je Docker Engine in WSL2 zonder Docker Desktop?

Zorg ervoor dat je WSL2 en een Linux-distributie hebt geïnstalleerd.

– Controleer je WSL-versie met ` wsl --version`; er zou versie 2 moeten staan.- Zo niet, stel dan WSL2 in als standaard door ` wsl --set-default-version 2` uit te voeren.- Toon je distributies met ` wsl --list --verbose` en zorg ervoor dat je Linux (bijvoorbeeld Ubuntu 22.04) versie 2 gebruikt.- Zo niet, voer dan ` wsl --set-version Ubuntu-22.04 2` uit.

Bij sommige configuraties vergeten mensen dit, en dat leidt later tot allerlei problemen. Doe dit dus eerst.

Installeer Ubuntu en update het alsof er geen morgen is.

– Maak verbinding met je Linux-systeem met ` wsl` of ` wsl -d Ubuntu-22.04`.- Update pakketten: ` sudo apt update && sudo apt upgrade -y`.- Zorg ervoor dat je tools zoals curl of wget hebt. Zo niet, installeer dan: ` sudo apt install curl`.

Installeer Docker met het officiële script; negeer de WSL-waarschuwing.

– Uitvoeren: ` curl -fsSL https://get.docker.com -o get-docker.sh` vervolgens ` sudo sh get-docker.sh.- Dit script haalt alles wat nodig is van de Docker-servers en installeert het min of meer automatisch. Ik zal niet liegen, het geeft soms een waarschuwing over het draaien binnen WSL, maar negeer die gewoon – die waarschuwing is misleidend.

Voeg je gebruiker toe aan de Docker-groep, zodat je niet alles met `sudo` hoeft uit te voeren.

– Uitvoeren: ` sudo usermod -aG docker $USER`.- Om de wijziging van kracht te laten worden, moet u mogelijk uw WSL-sessie opnieuw starten: ` wsl --shutdown` en vervolgens opnieuw opstarten.

Deze stap voorkomt dat je constant `sudo` moet typen voor Docker-opdrachten, wat na een tijdje irritant kan zijn.(Een vreemd detail: soms wordt het groepslidmaatschap niet meteen bijgewerkt, dus dan helpt het om WSL opnieuw op te starten of te sluiten en opnieuw te openen.)

Zorg ervoor dat Docker automatisch start en dat de systemd-ondersteuning werkt.

– Om te controleren of systemd is ingeschakeld, kijk in ` /etc/wsl.conf`. Als het bestaat en de volgende regel bevat: `[boot] systemd=true`, dan is alles in orde.- Zo niet, bewerk of maak het bestand aan met ` sudo nano /etc/wsl.conf` en voeg dat blok toe.- Controleer of systemd op uw Linux-systeem draait met: ` stat /sbin/init`.Als ` /sbin/init` verwijst naar ` /lib/systemd/systemd`, dan is alles in orde.- Schakel de Docker-service in en start deze: ` sudo systemctl enable --now docker.service`.- Controleer de status: ` systemctl status docker.service`.Als deze draait, is alles in orde. Als er fouten optreden over `systemd` dat niet draait, moet u mogelijk iets extra’s doen, zoals uw ` /etc/wsl.conf` aanpassen om het opstarten te forceren. Soms moet u een commando toevoegen om Docker automatisch te starten in uw WSL-initialisatieproces, met behulp van ` nano /etc/wsl.conf` en door toe te voegen: `[boot] command = “/usr/sbin/service docker start”`.- Herstart WSL (` wsl --shutdown`) en controleer het nogmaals.

Ja, het beheren van systemd in WSL kan soms wat lastig zijn. Sommige configuraties vereisen handmatige startopdrachten omdat systemd nog niet volledig wordt ondersteund. Daarom zijn mensen hier creatief in.

Configureer resourcebeperkingen voor WSL2.

– Maak een bestand ` %UserProfile%\.wslconfig ` aan en pas de resourcebeperkingen aan: ini [wsl2] memory=8GB processors=4 swap=2GB – Start WSL vervolgens opnieuw op: ` wsl --shutdown` — en wanneer je het opnieuw start, zijn de limieten van toepassing.

Want WSL moet het natuurlijk wel ingewikkelder maken dan nodig. Maar op deze manier voorkom je dat je Windows-host per ongeluk te weinig resources krijgt of dat WSL te veel resources krijgt toegewezen – tenzij je dat natuurlijk wel wilt.

Test Docker uit in WSL

– Voer het volgende commando uit docker run hello-worldvanuit WSL: `wsl`.- Het zou een kleine testimage moeten downloaden en uitvoeren, waarbij een welkomstbericht wordt weergegeven.- Vergeet niet dat als je Docker-commando’s vanuit Windows wilt uitvoeren, je ` wsl` ervoor moet zetten, bijvoorbeeld: ` wsl`, wsl docker imagesof je kunt het gewoon in je PATH instellen voor een soepelere werking.(Spoiler: het is een beetje onhandig, maar het is mogelijk.)

Pro-tip: Bewaar Docker-bestanden in het bestandssysteem van WSL (bijvoorbeeld in je thuismap) in plaats van in gekoppelde Windows-paden. Dit kan namelijk de prestaties vertragen of vreemde problemen met toegangsrechten veroorzaken.

Behandel indien nodig nieuwere Linux-firewallconfiguraties.

– Moderne distributies gebruiken nftables in plaats van iptables. Voor WSL ondersteunt kernel 5.8+ dit standaard, maar als het niet werkt, probeer dan het volgende: ` sudo update-alternatives --config iptables` – Kies ` iptables-legacy` indien nodig.

Dit alles om de netwerkverbinding met Docker soepel te laten verlopen. Niet leuk, maar de moeite waard als alles eenmaal is ingesteld.


Ja, het is een beetje omslachtig, maar het is absoluut mogelijk om Docker Engine in WSL2 te draaien zonder Docker Desktop. Verwacht wel wat hobbels onderweg – dingen zoals het inschakelen van systemd, het aanpassen van configuraties en het instellen van resourcebeperkingen zijn niet bepaald plug-and-play. Maar het voordeel? Minder resourceverbruik en een setup die meer Linux-native aanvoelt. Op de ene setup werkte het vrij soepel, maar op een andere moest ik hier en daar wat aanpassen. Niets extreems, alleen wat geduld nodig.

Samenvatting

  • Zorg ervoor dat WSL2 is ingeschakeld en dat je distributie correct is ingesteld.
  • Update en installeer Docker met behulp van het officiële script.
  • Configureer systemd-ondersteuning in WSL
  • Stel resourcebeperkingen in met `.wslconfig`.
  • Test Docker met `docker run hello-world` in WSL.

Samenvatting

Dit hele proces voelt een beetje als een lapmiddel, maar het is de moeite waard als je Docker Desktop wilt vermijden. Verwacht wat vallen en opstaan, vooral met de systemd-ondersteuning, maar als het eenmaal werkt, verlopen Docker-commando’s veel soepeler binnen WSL2. Hopelijk helpt dit iemand om sneller aan de slag te gaan – zonder de extra overhead van Docker Desktop.