Docker Compose bridge networks don't work in WSL2 on Windows

I have an app, consisting of a client and a server part. The client part should be available both for Windows and Linux. The app relies heavily on network management, so in order to test it I use a docker-compose project (simulating a network, router, etc.). The setup runs well and consistantly on Linux. For Windows, however, it’s more difficult.

I would like to test my app on GitHub actions, so there are several limitations:

  1. No nested virtualization is available.
  2. No Docker Desktop is installed.
  3. All setup is volatile, should be quickly created once action starts and will be destroyed once action exits.

Again, it works well Linux runner. But it doesn’t work on Windows. What I am trying to do is: set up WSL2 (with a special action), install Docker there (I use the convenience script), run docker-compose inside and make the created bridge networks available to the Windows host.

What works?

  1. WSL2 is installed, Docker is also installed successfully.
  2. Packet forwarding and iptables setup works, packets reach Linux host.

What doesn’t work?
For some reason, Docker bridge networks seem to not work. All of them are shown to be DOWN (including docker0) and also all the routes to the containers are marked as linkdown. So the packets are lost…

Here are the additional details and logs that I can provide:

Docker installation logs (from installation and running):
systemd[1]: Starting docker.service - Docker Application Container Engine...
dockerd[2102]: time="2025-06-07T17:51:16.775514981Z" level=info msg="Starting up"
dockerd[2102]: time="2025-06-07T17:51:16.777337118Z" level=info msg="OTEL tracing is not configured, using no-op tracer provider"
dockerd[2102]: time="2025-06-07T17:51:16.796932015Z" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s
dockerd[2102]: time="2025-06-07T17:51:17.537672483Z" level=info msg="Loading containers: start."
dockerd[2102]: time="2025-06-07T17:51:17.899955631Z" level=info msg="Loading containers: done."
dockerd[2102]: time="2025-06-07T17:51:17.951182726Z" level=info msg="Docker daemon" commit=45873be containerd-snapshotter=false storage-driver=overlay2 version=28.2.2
dockerd[2102]: time="2025-06-07T17:51:17.951825901Z" level=info msg="Initializing buildkit"
dockerd[2102]: time="2025-06-07T17:51:17.982806143Z" level=warning msg="CDI setup error /var/run/cdi: failed to monitor for changes: no such file or directory"
dockerd[2102]: time="2025-06-07T17:51:17.982876573Z" level=warning msg="CDI setup error /etc/cdi: failed to monitor for changes: no such file or directory"
dockerd[2102]: time="2025-06-07T17:51:18.049173994Z" level=info msg="Completed buildkit initialization"
dockerd[2102]: time="2025-06-07T17:51:18.058604301Z" level=info msg="Daemon has completed initialization"
dockerd[2102]: time="2025-06-07T17:51:18.058895122Z" level=info msg="API listen on /run/docker.sock"
systemd[1]: Started docker.service - Docker Application Container Engine.
dockerd[2102]: time="2025-06-07T17:52:29.501102962Z" level=error msg="Error handling plugin refcount operation" driver= error="legacy plugin: Unable to find plugin without name" mode=1
dockerd[2102]: time="2025-06-07T17:52:29.582633921Z" level=error msg="Error handling plugin refcount operation" driver= error="legacy plugin: Unable to find plugin without name" mode=1
dockerd[2102]: time="2025-06-07T17:52:29.657875049Z" level=error msg="Error handling plugin refcount operation" driver= error="legacy plugin: Unable to find plugin without name" mode=1
dockerd[2102]: time="2025-06-07T17:52:29.737173649Z" level=error msg="Error handling plugin refcount operation" driver= error="legacy plugin: Unable to find plugin without name" mode=1
systemd[1]: Starting docker.service - Docker Application Container Engine...
dockerd[288]: time="2025-06-07T17:54:07.209942988Z" level=info msg="Starting up"
dockerd[288]: time="2025-06-07T17:54:07.215074998Z" level=info msg="OTEL tracing is not configured, using no-op tracer provider"
dockerd[288]: time="2025-06-07T17:54:07.287951420Z" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s
dockerd[288]: time="2025-06-07T17:54:07.375441985Z" level=info msg="[graphdriver] using prior storage driver: overlay2"
dockerd[288]: time="2025-06-07T17:54:07.426622288Z" level=info msg="Loading containers: start."
dockerd[288]: time="2025-06-07T17:54:08.735548126Z" level=info msg="Removing stale sandbox" cid=3c911613e727 isRestore=false sid=228c539d3bf0
dockerd[288]: time="2025-06-07T17:54:08.767770263Z" level=warning msg="Failed deleting service host entries to the running container: open : no such file or directory"
dockerd[288]: time="2025-06-07T17:54:08.787657751Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint 77928de546bbc78597a1cf3e7bec0af41138742828716b54d13ce451626f6129 7c2ab277c4488893029eee34430ef57d3ced6a723237075f7bf534cca861c9b3], retrying...."
dockerd[288]: time="2025-06-07T17:54:08.866873339Z" level=warning msg="Failed deleting service host entries to the running container: open : no such file or directory"
dockerd[288]: time="2025-06-07T17:54:08.866939851Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint 9effa49890aa330215fd130f74346222e4c22238a41f6ddd03a99643081a22c9 49e268363d92daaee3336ced9e2613674fe8ef7efff86229406689a0c5992324], retrying...."
dockerd[288]: time="2025-06-07T17:54:08.906287446Z" level=info msg="Removing stale sandbox" cid=71b77ffcd57b isRestore=false sid=5b667a372ea3
dockerd[288]: time="2025-06-07T17:54:08.930843222Z" level=warning msg="Failed deleting service host entries to the running container: open : no such file or directory"
dockerd[288]: time="2025-06-07T17:54:08.950955553Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint a6acaab6d2da3b9af3ae1a0d4b8e562796734b0925ea23dbad4ac190784121b2 b4876e4d0a237c79289dd1ffbfac6f1fd3e92936d5ff81d5433d44ab5a78d36a], retrying...."
dockerd[288]: time="2025-06-07T17:54:09.011415091Z" level=warning msg="Failed deleting service host entries to the running container: open : no such file or directory"
dockerd[288]: time="2025-06-07T17:54:09.011497505Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint a00779de47089bd75002dc92ebed6ab09431adba5f6df43bcfc01809511b6769 a7c91b33c3046b5c945fecd0cadaf89ac51f6e8f5629609deb5185149564796d], retrying...."
dockerd[288]: time="2025-06-07T17:54:09.053465001Z" level=info msg="Removing stale sandbox" cid=3d120550b0a1 isRestore=false sid=5baee3d67385
dockerd[288]: time="2025-06-07T17:54:09.077133259Z" level=warning msg="Failed deleting service host entries to the running container: open : no such file or directory"
dockerd[288]: time="2025-06-07T17:54:09.077226575Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint a00779de47089bd75002dc92ebed6ab09431adba5f6df43bcfc01809511b6769 de4530a77748305a3d5f5d614134d59bf4b1b967b22eebe2bed062844fb7aec6], retrying...."
dockerd[288]: time="2025-06-07T17:54:09.113281458Z" level=info msg="Removing stale sandbox" cid=edec7fe3ce07 isRestore=false sid=93fc681bebe8
dockerd[288]: time="2025-06-07T17:54:09.144648636Z" level=warning msg="Failed deleting service host entries to the running container: open : no such file or directory"
dockerd[288]: time="2025-06-07T17:54:09.165079239Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint a6acaab6d2da3b9af3ae1a0d4b8e562796734b0925ea23dbad4ac190784121b2 b6a77be4652353802cc91af316c3a2c5dcc51f440894cb4d16f90321105193fa], retrying...."
dockerd[288]: time="2025-06-07T17:54:09.233191318Z" level=warning msg="Failed deleting service host entries to the running container: open : no such file or directory"
dockerd[288]: time="2025-06-07T17:54:09.233262630Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint 9effa49890aa330215fd130f74346222e4c22238a41f6ddd03a99643081a22c9 db057c8411145de5977a400088ea854d69d4e8d91c4e4c0d92f96cc115c3eab0], retrying...."
dockerd[288]: time="2025-06-07T17:54:09.576272744Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint_count a00f81e51bdf3593a561539cc2cff172cc516ece76d1472f3019699e2c98360d], retrying...."
dockerd[288]: time="2025-06-07T17:54:09.665654270Z" level=warning msg="error locating sandbox id 228c539d3bf0238c18627ffb2b65457726fe2a7bc787f159e4166bdf6ad5f7af: sandbox 228c539d3bf0238c18627ffb2b65457726fe2a7bc787f159e4166bdf6ad5f7af not found"
dockerd[288]: time="2025-06-07T17:54:09.665745885Z" level=warning msg="error locating sandbox id 93fc681bebe8a0f01d844790e3b4976e93df8896a7a63b13d6958ae00b11a155: sandbox 93fc681bebe8a0f01d844790e3b4976e93df8896a7a63b13d6958ae00b11a155 not found"
dockerd[288]: time="2025-06-07T17:54:09.665762888Z" level=warning msg="error locating sandbox id 5b667a372ea372ebe984e19d347e418a0914890dc86fed9396a6a1dcfbbb1fcb: sandbox 5b667a372ea372ebe984e19d347e418a0914890dc86fed9396a6a1dcfbbb1fcb not found"
dockerd[288]: time="2025-06-07T17:54:09.665775491Z" level=warning msg="error locating sandbox id 5baee3d673856933b5471ca8653269b7782963c70454abef0db1a42a5bbab7fa: sandbox 5baee3d673856933b5471ca8653269b7782963c70454abef0db1a42a5bbab7fa not found"
dockerd[288]: time="2025-06-07T17:54:09.665927317Z" level=info msg="Loading containers: done."
dockerd[288]: time="2025-06-07T17:54:09.704231584Z" level=info msg="Docker daemon" commit=45873be containerd-snapshotter=false storage-driver=overlay2 version=28.2.2
dockerd[288]: time="2025-06-07T17:54:09.704577644Z" level=info msg="Initializing buildkit"
dockerd[288]: time="2025-06-07T17:54:09.975573910Z" level=warning msg="CDI setup error /var/run/cdi: failed to monitor for changes: no such file or directory"
dockerd[288]: time="2025-06-07T17:54:09.975655524Z" level=warning msg="CDI setup error /etc/cdi: failed to monitor for changes: no such file or directory"
dockerd[288]: time="2025-06-07T17:54:10.072519878Z" level=info msg="Completed buildkit initialization"
dockerd[288]: time="2025-06-07T17:54:10.080711936Z" level=info msg="Daemon has completed initialization"
dockerd[288]: time="2025-06-07T17:54:10.080764344Z" level=info msg="API listen on /run/docker.sock"
systemd[1]: Started docker.service - Docker Application Container Engine.
systemd[1]: Starting docker.service - Docker Application Container Engine...
dockerd[288]: time="2025-06-07T17:55:08.947946189Z" level=info msg="Starting up"
dockerd[288]: time="2025-06-07T17:55:08.954312008Z" level=info msg="OTEL tracing is not configured, using no-op tracer provider"
dockerd[288]: time="2025-06-07T17:55:09.045951448Z" level=info msg="Creating a containerd client" address=/run/containerd/containerd.sock timeout=1m0s
dockerd[288]: time="2025-06-07T17:55:09.131789757Z" level=info msg="[graphdriver] using prior storage driver: overlay2"
dockerd[288]: time="2025-06-07T17:55:09.173111044Z" level=info msg="Loading containers: start."
dockerd[288]: time="2025-06-07T17:55:10.747079636Z" level=warning msg="Error (Unable to complete atomic operation, key modified) deleting object [endpoint_count bfda728adb25b406bb6d60d1d00bf829b4d38743841ed6a2aaf9235ef60097d1], retrying...."
dockerd[288]: time="2025-06-07T17:55:10.827731347Z" level=warning msg="error locating sandbox id 93fc681bebe8a0f01d844790e3b4976e93df8896a7a63b13d6958ae00b11a155: sandbox 93fc681bebe8a0f01d844790e3b4976e93df8896a7a63b13d6958ae00b11a155 not found"
dockerd[288]: time="2025-06-07T17:55:10.827808573Z" level=warning msg="error locating sandbox id 5baee3d673856933b5471ca8653269b7782963c70454abef0db1a42a5bbab7fa: sandbox 5baee3d673856933b5471ca8653269b7782963c70454abef0db1a42a5bbab7fa not found"
dockerd[288]: time="2025-06-07T17:55:10.827838983Z" level=warning msg="error locating sandbox id 5b667a372ea372ebe984e19d347e418a0914890dc86fed9396a6a1dcfbbb1fcb: sandbox 5b667a372ea372ebe984e19d347e418a0914890dc86fed9396a6a1dcfbbb1fcb not found"
dockerd[288]: time="2025-06-07T17:55:10.827859990Z" level=warning msg="error locating sandbox id 228c539d3bf0238c18627ffb2b65457726fe2a7bc787f159e4166bdf6ad5f7af: sandbox 228c539d3bf0238c18627ffb2b65457726fe2a7bc787f159e4166bdf6ad5f7af not found"
dockerd[288]: time="2025-06-07T17:55:10.827940917Z" level=info msg="Loading containers: done."
dockerd[288]: time="2025-06-07T17:55:10.864860090Z" level=info msg="Docker daemon" commit=45873be containerd-snapshotter=false storage-driver=overlay2 version=28.2.2
dockerd[288]: time="2025-06-07T17:55:10.865369859Z" level=info msg="Initializing buildkit"
dockerd[288]: time="2025-06-07T17:55:11.049823847Z" level=warning msg="CDI setup error /etc/cdi: failed to monitor for changes: no such file or directory"
dockerd[288]: time="2025-06-07T17:55:11.049874763Z" level=warning msg="CDI setup error /var/run/cdi: failed to monitor for changes: no such file or directory"
dockerd[288]: time="2025-06-07T17:55:11.085268766Z" level=info msg="Completed buildkit initialization"
dockerd[288]: time="2025-06-07T17:55:11.096468948Z" level=info msg="Daemon has completed initialization"
dockerd[288]: time="2025-06-07T17:55:11.096622096Z" level=info msg="API listen on /run/docker.sock"
systemd[1]: Started docker.service - Docker Application Container Engine.
Docker `ps` output:
NAME                  IMAGE               COMMAND                  SERVICE      CREATED          STATUS                    PORTS
docker-echo-1         docker-echo         "sh -c 'ip route rep…"   echo         42 seconds ago   Up 41 seconds (healthy)   
docker-ext-router-1   docker-ext-router   "sh -c 'echo 1 > /pr…"   ext-router   42 seconds ago   Up 41 seconds             
docker-int-router-1   docker-int-router   "sh -c 'echo 1 > /pr…"   int-router   42 seconds ago   Up 41 seconds             
docker-whirlpool-1    docker-whirlpool    "sh -c 'ip route rep…"   whirlpool    42 seconds ago   Up 38 seconds (healthy)   8587/tcp
Docker `network ls` output:
NETWORK ID     NAME                  DRIVER    SCOPE
33c041423c59   bridge                bridge    local
77928de546bb   docker_sea-cli-int    bridge    local
a6acaab6d2da   docker_sea-rout-ext   bridge    local
9effa49890aa   docker_sea-rout-int   bridge    local
a00779de4708   docker_sea-serv-ext   bridge    local
56c1279e9777   host                  host      local
a81854b19274   none                  null      local
Output of `ip addr show`:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:15:5d:ac:42:53 brd ff:ff:ff:ff:ff:ff
    inet 172.23.70.1/20 brd 172.23.79.255 scope global eth0
       valid_lft forever preferred_lft forever
    inet6 fe80::215:5dff:feac:4253/64 scope link
       valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 52:a0:f5:42:60:58 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::50a0:f5ff:fe42:6058/64 scope link
       valid_lft forever preferred_lft forever
24: br-a00779de4708: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether da:e7:e7:1e:ae:5c brd ff:ff:ff:ff:ff:ff
    inet 10.42.0.1/24 brd 10.42.0.255 scope global br-a00779de4708
       valid_lft forever preferred_lft forever
    inet6 fe80::d8e7:e7ff:fe1e:ae5c/64 scope link
       valid_lft forever preferred_lft forever
25: br-77928de546bb: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether ca:a1:11:b9:b7:67 brd ff:ff:ff:ff:ff:ff
    inet 10.82.0.1/24 brd 10.82.0.255 scope global br-77928de546bb
       valid_lft forever preferred_lft forever
    inet6 fe80::c8a1:11ff:feb9:b767/64 scope link
       valid_lft forever preferred_lft forever
26: br-9effa49890aa: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 06:f9:a1:94:88:69 brd ff:ff:ff:ff:ff:ff
    inet 10.87.82.1/24 brd 10.87.82.255 scope global br-9effa49890aa
       valid_lft forever preferred_lft forever
    inet6 fe80::4f9:a1ff:fe94:8869/64 scope link
       valid_lft forever preferred_lft forever
27: br-a6acaab6d2da: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default
    link/ether 56:91:c7:06:21:c1 brd ff:ff:ff:ff:ff:ff
    inet 10.87.42.1/24 brd 10.87.42.255 scope global br-a6acaab6d2da
       valid_lft forever preferred_lft forever
    inet6 fe80::5491:c7ff:fe06:21c1/64 scope link
       valid_lft forever preferred_lft forever
Output of `ip route show`:
default via 172.23.64.1 dev eth0 proto kernel 
10.42.0.0/24 dev br-a00779de4708 proto kernel scope link src 10.42.0.1 linkdown 
10.82.0.0/24 dev br-77928de546bb proto kernel scope link src 10.82.0.1 linkdown 
10.87.42.0/24 dev br-a6acaab6d2da proto kernel scope link src 10.87.42.1 linkdown 
10.87.82.0/24 dev br-9effa49890aa proto kernel scope link src 10.87.82.1 linkdown 
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown 
172.23.64.0/20 dev eth0 proto kernel scope link src 172.23.70.1 

I would always use the official recommended installation guide, not the script. Than we could talk about the Linux distribution in the WSL2 distribution and whether the official installation guide worked or not. But for now, let’s assume it wouldn’t make a difference.

The distribution in the WSL2 distribution still could be important. And You should first try everything manually in WSL to rule out issues witht hee pipeline.

How did you do that? And how did you create the contaniers? Can you share a compose file?

Networks are down until a container is using them. So unless you used the default bridge network, it is okay if it is down.

Yes, sorry, I had to mention that earlier. Of course I tried official Docker installation guide first, but the result was similar, and script is just easier to reproduce.
The distribution I use is Ubuntu-24.04, but it’s not a requirement, I can switch to any other (if it works better).

I used Windows route add commands to make the docker-compose networks available via WSL IP and then enabled IP forwarding and added a few iptables rules. However, I don’t think it’s important (at least for now) since I can’t access the containers even from WSL itself.

Here’s my standard testing configuration: it works on my Ubuntu laptop and on Ubuntu 24.04 runner, so there should be no issues with it.

I test the configuration first by trying to connect to the containers by IP from-inside WSL: either by running ping 10.87.82.87 or nc -vz 10.87.82.87 8587 (to test connectivity to whirlpool container) - and both commands fail. Specifically nc fails with the following error: nc: connect to 10.87.82.87 port 8587 (tcp) failed: No route to host, which makes me think it has something to do with container networks and routing.

I do understand that networks are expected to be down unless there are containers using them - but as you can see from the logs, containers are (shown to be) up and the compose file defines them attached to the networks; and that’s what makes me think something is wrong here.

You are aware that the docker bridge networks are not routable by design, and are natted networks?, The same is true for the WSL2 network.

I am not sure if docker really is the right tool to simulate network setups.

Yes, I am aware of that: my whole setup just might not work by design. But I would like to ensure that the issue lies in the nature of the networks, and not in my configuration (because AFAIK pinging a docker container from the host it’s running on is a valid use case). And if everything else works - but the packets won’t be routed after all, so be it.

Unfortunately, for now that is the only way I came up with for testing my Windows app that would require two different Linux servers with two different IP addresses. The other option would be hosting several virtual machines for that, but I don’t think I can afford it for now…

Moreover, it works just fine on linux host (the same compose project) - and that’s why I thought it might as well work for Windows.

If by host you mean the WSL2 distro you installed docker-ce in, then indeed the distribution should be able to ping the containers.

Within the WSL2 distro, docker-ce should behave like docker-ce on a vm or a bare metal machine. Though, from the Windows host to the WSL2 distro things behave different.

It is odd that your docker0 interface is down. It should be up, even if you installed docker-ce fresh, and didn’t run a container yet.

Did you try to stop the daemon, remove the docker0 interface and start the daemon again, so it re-creates the interface again?

I wrote and think the opposite :slight_smile: It is down in my VM as well until I start a container.

Yes, I only wrote that docker0 is expected to be down, not the compose networks used by running containers.

Would two LAN IP addresses for the Windows host wor that you forward to the WSL2 distributions IP address, optionally for two different ports? Then you could use the port mapping in the WSL2 distibution to containers.

I tried to add a second IP to WSL2 intself now, but I failed, so it is just an idea to add a new IP to the host..

But before trying anything, first you need to make containers work in a WSL distribution without any special routing.

1 Like

My bad, you are right. The vm I connected to, must have had a container attached to the default bridge that slipped though while checking.

Indeed, I am focusing on running containers in a WSL for now. When I discover possibilities and limitations of this approach I would be able to find out the best approach for testing (yes, maybe creating or simulating a network on windows level could work as well, thank you for the idea!).

But the Docker-based approach worked for me on Linux so I’m wondering what’s the problem with it in WSL…
Do you have any recommendations maybe about where should I look for a solution?

I needed to install Docker CE in an Ubuntu 24.04 WSL2 today, but I forgot to test the network, I just pulled images. If I don’t forget it, I will test it tomorrow.

You can check other journal logs as well, not related to Docker if there is anything suspicious.

1 Like

I tried it today and worked perfectly. I would try to reinstall the whole WSL2 distribution and Docker. Or before removing the existing distribution, you could try installing a new one, but if I remember correctly, you can’t install the same Distro twice. When I did, I had to export one and import using a new name.

If you are looking for what the difference could be between WSL2 and other Linux machines, the kernel could be one thing and the network another, but if you had network issue, I doubt that you would see interfaces down while containers are running.

Yes, honestly, I think I have found the issue myself. I’m still not that sure about what was the cause exactly, but apparently some of the packets I was sending to WSL for testing purposes triggered a critical kernel exception (which is weird, but I’m not surprised at this point) and caused the system to reboot silently. After the reboot, the Docker networks (naturally) appeared to be DOWN and all the subsequent pings and connections were failing. Anyway, I think my setup is just way too complex and WSL was (for sure) not intended to handle anything like this.