- WSL 2 biedt een kernel Linux echt en versnelt Docker in Windows met een lager verbruik van hulpbronnen.
- Docker Desktop met WSL 2-backend vereenvoudigt de integratie, de opslagruimte en beheer van VS Code.
- Het is mogelijk om Docker rechtstreeks in WSL 2 uit te voeren zonder Docker Desktop, door DOCKER_HOST en de beveiliging aan te passen.
- Verbeterde prestaties bij het werken binnen het WSL-bestandssysteem en met actieve WSL-integraties.

Als je op Windows werkt en wilt ontwikkelen alsof je op Linux werkt, is de combinatie van WSL 2 en Docker een van de beste oplossingen die je op je machine kunt instellen. Deze integratie stelt je in staat om Linux- en Windows-containers op dezelfde machine te draaien, minder resources te verbruiken en aanzienlijk snellere daemon- opstarttijden te ervaren in vergelijking met andere, meer resource-intensieve opties.
In de volgende regels vindt u een complete handleiding voor het instellen van Docker Desktop met een WSL 2-backend , of, als u dat liever hebt, voor het rechtstreeks uitvoeren van Docker binnen WSL 2 zonder Docker Desktop te gebruiken. U leert ook hoe u het kunt gebruiken met Visual Studio Code, krijgt tips voor prestatieverbetering, informatie over opslagpaden en een sectie met veelvoorkomende fouten en hun oplossingen.
Containers en WSL 2: wat u moet weten
Docker verpakt applicaties en hun afhankelijkheden in containers, zodat ze in elke omgeving hetzelfde werken . In tegenstelling tot een traditionele virtuele machine heeft een container geen volledig besturingssysteem nodig: hij deelt de kernel van de host en voegt alleen toe wat uw app nog niet heeft, waardoor de bestandsgrootte kleiner wordt en de uitvoering sneller verloopt.
Vergeleken met een virtuele machine bespaart deze aanpak geheugen en CPU-kracht, omdat er geen volledig besturingssysteem wordt uitgevoerd . Op Windows biedt WSL 2 een echte Linux-kernel met ondersteuning voor systeemoproepen, waardoor Docker native kan draaien met zeer solide prestaties.
Een ander belangrijk voordeel is continue beschikbaarheid. Dankzij containers en orchestrators zoals Kubernetes kunt u services versie voor versie bijwerken , containers direct vervangen en meerdere revisies als back-up bewaren zonder het hele systeem plat te leggen.
Kortom, Docker bevordert consistente omgevingen, minimaliseert conflicten tussen afhankelijkheden en versnelt implementaties. In combinatie met WSL 2 op Windows krijg je een Linux-workflow zonder je bureaublad te verlaten, met automatische integratie van bestanden en poorten die beschikbaar zijn voor localhost.
Windows-vereisten
Controleer of uw Windows 10/11 voldoet aan de minimale vereisten: 64-bits, virtualisatie ingeschakeld in de BIOS/UEFI en minimaal 4 GB RAM. Bij modernere systemen is het inschakelen van WSL en het bijbehorende virtualisatieplatform voldoende.
Om de componenten vanuit PowerShell als beheerder te activeren, kunt u opdrachten gebruiken zoals " enable WSL" en "Virtual Machine Platform ". Op bijgewerkte systemen wordt het proces vereenvoudigd met WSL:
wsl --install
Als je WSL al hebt, stel dan WSL 2 in als de standaarddistributie en controleer of migreer je geïnstalleerde distributies:
wsl --set-default-version 2
wsl -l -v
wsl --set-version Ubuntu 2
Om de standaarddistributie te kiezen waarmee u wilt integreren, kunt u de standaardwaarde indien nodig wijzigen:
wsl -s Ubuntu
Docker Desktop installeren met een WSL 2-gebaseerde engine
De meest directe manier om een professionele omgeving te creëren, is door Docker Desktop te gebruiken met een WSL 2-backend . Download het Docker Desktop-installatieprogramma voor Windows, voer het uit en volg de instructies van de wizard. Als uw systeem dit ondersteunt, wordt de WSL 2-engine automatisch geselecteerd of wordt u tijdens de installatie gevraagd deze in te schakelen.
Nadat je Docker Desktop hebt gestart, open je het instellingenpaneel en schakel je in het gedeelte 'Algemeen' de optie voor de op WSL 2 gebaseerde engine in, indien deze nog niet is ingeschakeld. Hiermee kun je Linux-containers vanuit Windows uitvoeren zonder de traditionele Hyper-V.
Ga vervolgens naar Instellingen > Bronnen > WSL-integratie en schakel de integratie in voor de WSL 2-distributie(s) die u gaat gebruiken (bijvoorbeeld Ubuntu). Als het tabblad WSL-integratie niet verschijnt, controleer dan of u zich in de Linux-containermodus bevindt en niet in de Windows-containermodus.
Om te controleren of alles correct is ingesteld, opent u uw WSL-distributie (bijvoorbeeld Ubuntu) en voert u de verificatieopdrachten uit :
docker --version
docker run hello-world
Dit bevestigt dat het CLI-programma en de daemon reageren. Als je de hello-world testimage kunt downloaden, werkt de integratie.
Ontwikkelen in containers met Visual Studio Code
Met WSL 2 en Docker operationeel, wordt de ontwikkelervaring aanzienlijk verbeterd met Visual Studio Code en drie officiële extensies: WSL, Dev Containers en Docker. Elk van deze extensies biedt een onderdeel van de oplossing voor het werken met containers op Windows.
Installeer de WSL-extensie om mappen van je distributie rechtstreeks in VS Code te openen. Zo voorkom je problemen met paden, incompatibele binaire bestanden of machtigingsproblemen tussen systemen.
Installeer Dev Containers om je projectmap in een container te openen en te ontwikkelen met behulp van de omgeving die is gedefinieerd in een Dockerfile en een devcontainer.json-bestand. Het is een handige manier om tools en afhankelijkheden binnen je team te standaardiseren.
Installeer ook de Docker-extensie om afbeeldingen, containers en volumes rechtstreeks vanuit de zijbalk van VS Code te compileren, uit te voeren en te beheren . Dit vereenvoudigt dagelijkse taken aanzienlijk, zonder dat u de editor hoeft te verlaten.
Een typische workflow zou zijn: kloon het project in WSL, open het met code .en start de Dev Containers-actie in het opdrachtpalet om Heropenen in containerVS Code genereert een .devcontainer-map met uw Dockerfile en devcontainer.json die geschikt zijn voor uw stack (bijv. Python/Django) en bouwt de image.
Controleer of u nog steeds Linux gebruikt in de terminal geïntegreerd met VS Code: uname y python3 --versionU ziet Linux (WSL 2) en de versie van Python gedefinieerd door de container, die kan verschillen van die in de distro. Met de configuratie van Uitvoeren en debuggen (bijvoorbeeld Django-profiel), kunt u uw applicatie in de container uitvoeren en debuggen, door toegang te krijgen tot de lokale URL die ik aangeef, meestal http://127.0.0.1:8000/.
Docker uitvoeren zonder Docker Desktop: directe installatie in WSL 2
Als je Docker Desktop wilt vermijden vanwege licentieproblemen of persoonlijke voorkeur, kun je Docker Engine installeren binnen je WSL 2-distributie . Werk op Ubuntu de pakketten bij, voeg de officiële repository toe en ga verder met de installatie van de benodigde componenten.
sudo apt update && sudo apt upgrade
source /etc/os-release
curl -fsSL https://download.docker.com/linux/${ID}/gpg | sudo apt-key add -
echo "deb [arch=amd64] https://download.docker.com/linux/${ID} ${VERSION_CODENAME} stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io
Om te voorkomen dat je `sudo` voor elk commando moet plaatsen, voeg je je gebruiker toe aan de `docker`- groep en log je opnieuw in bij de distributie:
sudo usermod -aG docker $USER
Start de daemon wanneer je hem nodig hebt in WSL 2 met:
sudo dockerd
Als je een bericht ziet zoals "API listen on /var/run/docker.sock" , dan draait de server. Open een andere terminal op je distributie en test of alles reageert met:
docker run --rm hello-world
Docker CLI gebruiken vanuit Windows met Docker in WSL 2
Om Docker en Docker Compose vanuit Windows te starten terwijl de daemon in WSL 2 draait, download je docker.exe en docker-compose.exe en voeg je deze toe aan het PATH van je Windows-gebruiker. Hierdoor kun je opdrachten vanuit PowerShell of VS Code uitvoeren in Windows-terminals.
Je kunt een PowerShell- script maken dat het IP-adres van de WSL 2-distributie ophaalt en de daemon start die luistert via TCP, waarbij de omgevingsvariabele DOCKER_HOST in Windows wordt ingesteld. Een voorbeeld van de workflow zou er als volgt uit kunnen zien:
$ip = (wsl sh -c "hostname -I").Split(" ")[0]
$DOCKER_HOST = "tcp://" + $ip + ":2375"
[System.Environment]::SetEnvironmentVariable('DOCKER_HOST',$DOCKER_HOST,[System.EnvironmentVariableTarget]::User)
wsl sh -c "sudo dockerd --tls=false -H tcp://$ip"
Je ziet waarschuwingen die aangeven dat het openen van de daemon zonder TLS onveilig is . Deze configuratie is uitsluitend bedoeld voor lokale ontwikkeling; gebruik deze niet in een productieomgeving. Je kunt het volgende proberen in een ander PowerShell-venster:
docker version
docker container ls
docker run --rm hello-world
docker run -it --rm -p 8080:80 uzyexe/tetris
Als je meerdere services moet coördineren, werkt docker-compose nog steeds. Je kunt bijvoorbeeld met een voorbeeldbestand een databasegestuurde app starten en de poorttoewijzing controleren door localhost te benaderen op de poort die je hebt geopend.
Algemene instellingen in docker-compose zonder Docker Desktop
Als je zonder Docker Desktop werkt, zijn sommige automatiseringsfuncties niet meer beschikbaar. Het is daarom raadzaam om twee dingen aan te passen in je docker-compose.yml-bestand :
- In volumes waarin het accentteken voor thuis wordt gebruikt
~Vervang het bijvoorbeeld door uw eigen thuispad in WSL 2/mnt/c/Users/tu-usuarioals je naar bestanden in C: van de distro verwijst. - Voeg de sectie toe
extra_hostswanneer uw project afhankelijk is van de aliashost.docker.internal:
extra_hosts:
- host.docker.internal:host-gateway
Dit helpt je verbindingsproblemen tussen containers en de host te voorkomen en bootst de functies na die Docker Desktop standaard biedt.
Prestaties en best practices met WSL 2
Docker Desktop op WSL 2 maakt gebruik van dynamische geheugenallocatie , waardoor alleen het noodzakelijke geheugen wordt gebruikt en intensieve bewerkingen zoals builds worden versneld. Bovendien is de koude start van de daemon aanzienlijk sneller dan bij alternatieven gebaseerd op conventionele virtuele machines.
De gouden regel: houd uw projectbestanden binnen de WSL 2-bestandssysteemWerk vanuit /home/tu-usuario Vermijd in deze distributie de I/O-straffen die optreden bij het koppelen van Windows-paden onder /mnt/c voor taken met veel schijftoegang.
Zorg ervoor dat in Docker Desktop de optie "Gebruik WSL 2-gebaseerde engine" is ingeschakeld en dat de juiste distributie-integratie is geactiveerd via Instellingen > Bronnen > WSL-integratie. Als u dit doet en uw projecten naar de juiste locatie verplaatst, zult u een duidelijk verschil in prestaties merken.
Als u vanwege bedrijfsbeleid een hogere mate van isolatie nodig hebt, kunt u overwegen de Hyper-V- modus in Docker Desktop te gebruiken of verbeterde containerisolatie in te schakelen. Voor de meeste ontwikkelscenario's biedt WSL 2 een uitstekende balans tussen prestaties en eenvoud.
Opslagmappen en handige snelkoppelingen
Docker Desktop maakt twee interne WSL-distributies aan voor uw gegevens: docker-desktop en docker-desktop-data . U kunt de mappen vanuit Windows benaderen via UNC-paden om de inhoud ervan te bekijken.
Een handige truc: vanaf de lancering van uw WSL-distributie explorer.exe . Om de huidige map in Verkenner te openen, kunt u ook rechtstreeks naar permanente koppelpunten navigeren met:
\\wsl$\<Distro>\mnt\wsl
Vervang <Distro> door de naam van uw distributie, bijvoorbeeld Ubuntu-24.04, om de interne locaties te vinden waar WSL zijn volumes beschikbaar stelt en waar Docker Desktop gegevens opslaat wanneer u via WSL 2 werkt.
Veelvoorkomende problemen oplossen
Als je een eerdere versie van de integratie gebruikt, heb je mogelijk nog een oude Docker-context genaamd wsl die niet meer in gebruik is . Controleer je contexten en verwijder deze om fouten te voorkomen.
docker context ls
docker context rm wsl
Deze verouderde context kan foutmeldingen veroorzaken bij het openen van docker_wsl- pipes op Windows. Door deze te verwijderen, wordt de standaardconfiguratie hersteld die zowel op Windows als op WSL 2 werkt.
Als je het gedeelte 'WSL-integratie' niet ziet in Docker Desktop, bevind je je mogelijk in de Windows-containermodus . Schakel over naar Linux-containers via het pictogram in het systeemvak. Ga vervolgens terug naar Instellingen om de integratie in te schakelen.
Houd er rekening mee dat WSL het bestandssysteem blootstelt aan de host in \\wsl$\Dit is niet uniek voor Docker Desktop; het maakt deel uit van het WSL-interoperabiliteitsmodel. Docker Desktop draait op zijn beurt op een eigen interne distributie. docker-desktop, met dezelfde isolatie als elke andere WSL-distributie; er is alleen interactie met andere distributies wanneer u WSL-integratie activeert.
Als u uw omgeving om veiligheidsredenen wilt beveiligen, kunt u Hyper-V of geavanceerde containerisolatiebeleidsregels overwegen. Voor algemene ontwikkeling is WSL 2 voldoende, maar sommige organisaties geven de voorkeur aan extra bescherming, afhankelijk van hun risiconiveau.
Met al het bovenstaande heb je nu een compleet beeld om te kiezen hoe je wilt werken: gebruik Docker Desktop met de WSL 2-engine voor een begeleide en stabiele ervaring, of installeer Docker direct op WSL 2 om externe afhankelijkheden te verminderen; als je dit combineert met VS Code, de bijbehorende extensies en de projecten host binnen het WSL-bestandssysteem, profiteer je van een flexibele en consistente omgeving met verfijnde prestatiecontrole, duidelijke datapaden en directe oplossingen voor veelvoorkomende fouten.
Gepassioneerd schrijver over de wereld van bytes en technologie in het algemeen. Ik deel mijn kennis graag door te schrijven, en dat is wat ik in deze blog ga doen: je de meest interessante dingen laten zien over gadgets, software, hardware, technologische trends en meer. Mijn doel is om u te helpen op een eenvoudige en onderhoudende manier door de digitale wereld te navigeren.