Docker optimaliseren met WSL2

Maximale performance voor development met PHPStorm en VS Code

Docker + WSL2 is voor veel developers dé standaard geworden op Windows. De combinatie is krachtig, maar zonder goede configuratie kan Docker traag worden, onnodig veel geheugen gebruiken en zelfs Windows instabiel maken.

In deze blog combineren we:

  • WSL2 performance tuning
  • Docker best practices in WSL
  • Stabiel werken met PHPStorm en VS Code

Waarom Docker draaien in WSL?

Docker Desktop gebruikt onder water WSL2 als Linux-kernel. Dat betekent dat Docker performance direct afhankelijk is van:

  • WSL CPU-instellingen
  • WSL geheugenlimieten
  • De locatie van je projectbestanden

Belangrijk: Docker optimaliseren = WSL goed instellen.


Fundament: juiste WSL configuratie

.wslconfig (Windows-niveau)

[wsl2]
localhostForwarding=true
processors=10
memory=24GB

Waarom dit belangrijk is voor Docker

  • Docker containers concurreren met Windows om resources
  • Zonder limieten kan Docker al het RAM opslokken
  • Windows gaat swapen
  • IDE’s zoals PHPStorm en VS Code kunnen vastlopen

Advies: gebruik maximaal 60–75% van je CPU-cores en laat minimaal 8–12 GB geheugen vrij voor Windows.


wsl.conf (Linux-niveau)

[boot]
systemd=false

[user]
default=stephan

Voor Docker-development zorgt dit voor:

  • Snellere WSL starts
  • Minder achtergrondprocessen
  • Lager idle-geheugenverbruik

Docker Desktop instellingen

Controleer in Docker Desktop:

  • Gebruik de WSL2-based engine
  • Activeer alleen Linux distributies die je echt gebruikt

Elke extra distro kost geheugen en CPU.


Grootste performance killer: het filesystem

Niet doen: projecten op /mnt/c

/mnt/c/Users/stephan/projects

Nadelen:

  • Trage file I/O
  • Langzame Docker builds
  • Watchers reageren slecht

Wel doen: projecten in WSL zelf

/home/stephan/projects

Voordelen:

  • Tot 10x snellere filesystem toegang
  • Snellere Docker builds
  • Snellere PHPStorm indexing
  • Lager CPU-verbruik

Gouden regel: containers en code moeten in hetzelfde Linux filesystem draaien.


Docker Compose performance tips

Volume mounts

Verkeerd:

volumes:
  - /mnt/c/project:/app

Correct:

volumes:
  - ./project:/app

(Waar ./project zich in WSL bevindt)

Onnodige synchronisatie vermijden

  • Sync alleen wat nodig is
  • Cache mappen niet mounten

Denk aan:

  • vendor
  • node_modules
  • var/cache

PHP containers optimaliseren

  • Gebruik PHP-FPM met pm=dynamic
  • Zet pm.max_children niet onnodig hoog
  • Gebruik geen debug extensies in standaard images

Xdebug

  • Alleen inschakelen bij debuggen
  • Bij voorkeur via environment variabele

PHPStorm + Docker + WSL

Beste setup:

  • PHP interpreter via Docker container
  • Projectbestanden in WSL
  • Composer draaien in container
  • PHPUnit in container

Resultaat: snellere tests, correcte paths en stabiele performance.


VS Code + Docker + WSL

  • Gebruik de WSL Extension
  • Optioneel: Dev Containers

Voordelen: native Linux tooling, snelle terminals en geen overhead.


Crashes voorkomen

  • Laat altijd geheugen vrij voor Windows
  • Beperk CPU-usage van WSL
  • Sluit ongebruikte containers
  • Gebruik docker compose down als je klaar bent

Resource monitoring

docker stats
htop

WSL en Docker herstarten

Na wijzigingen in .wslconfig:

wsl --shutdown

Start daarna Docker Desktop opnieuw.


Conclusie

Met de juiste combinatie van WSL-configuratie, correct filesystem gebruik en slimme Docker instellingen:

  • Draait Docker snel en stabiel
  • Blijven PHPStorm en VS Code responsief
  • Voorkom je Windows crashes
  • Krijg je bijna Linux-server performance op Windows

Docker + WSL2 is krachtig — mits je het goed instelt.