microsoft / microsoft/WSL

[WSL 2.9.3] Docker fails to bind ports with "address already in use" when networkingMode=mirrored is enabled

Open
#40,984 28 comments 0 reactions 2 assignees Claimed by @FetoiuCatalin View on GitHub
needs-investigation network wsl2
Dominant language
C++
Stars
33.7k
Forks
1.8k
Avg merge
3d 17h
Merged PRs (30d)
116

Description

### Windows Version

Microsoft Windows [version 10.0.26200.8246]

### WSL Version

2.9.3.0

### Are you using WSL 1 or WSL 2?

- [x] WSL 2
- [ ] WSL 1

### Kernel Version

Linux version 6.18.35.2-microsoft-standard-WSL2

### Distro Version

Ubuntu 22.04

### Other Software

* Docker Desktop or Docker Engine running inside WSL
* Docker Compose

### Repro Steps

1. Upgrade WSL to version **2.9.3** (pre-release).
2. Enable mirrored networking by adding the following to `%USERPROFILE%\.wslconfig`:
```ini
[wsl2]
networkingMode=mirrored
```
1 .Restart WSL completely (wsl --shutdown).
2. Attempt to start a Docker container that exposes a port to the host (e.g., 0.0.0.0:8003:8003). I was trying to run Immich via docker-compose up -d.

### Expected Behavior

The Docker container should start successfully, bind to the port, and the service should be accessible via both localhost:8003 and the Windows host's LAN IP address (e.g., http://192.168.1.39:8003/

### Actual Behavior

Docker fails to start the container and throws the following endpoint connectivity error:
> Error response from daemon: failed to set up container networking: driver failed programming external connectivity on endpoint immich_server (...): failed to bind host port 0.0.0.0:8003/tcp: address already in use

Troubleshooting Performed (To rule out user errors)
I have thoroughly checked both the Windows host and the WSL environment to ensure the port is truly available. The issue persists despite confirming the following:

1. No WinNAT Port Reservation: Checked netsh interface ipv4 show excludedportrange protocol=tcp in Windows. Port 8003 is NOT in the excluded range. Restarting WinNAT (net stop winnat / net start winnat) did not help.
2. No Windows Processes Using the Port: Ran netstat -ano | findstr :8003 on Windows. No output.
3. No WSL/Docker Zombie Processes: Ran docker ps -a and sudo ss -tulpn | grep 8003 inside WSL. No leftover containers or docker-proxy processes are holding the port.
4. No PortProxy Conflicts: Verified that there are no conflicting netsh interface portproxy rules active.
5. Successful Downgrade: After safely downgrading WSL from 2.9.3 back to 2.7.10 (and reverting to NAT mode), the network behavior returned to normal, confirming this is a regression or bug specific to the newer pre-release and the mirrored networking mode.

### Diagnostic Logs

_No response_

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.