Docker on WSL2 in Windows 2004
Documenting a couple of pitfalls, and how I've set up Docker Desktop under WSL2
Following Unregister and reinstall a distribution, I had run wsl --unregister Ubuntu-20.04
On starting Docker Desktop, I would see a crash, which included these log lines:
System.InvalidOperationException:
Failed to deploy distro docker-desktop to C:\Users\Nick\AppData\Local\Docker\wsl\distro: exit code: -1
stdout: The system cannot find the path specified.
Even downloading and reinstalling the latest version of Docker (2.3.0.3
) didn't fix it.
Finally, on watching a video by Nick Janetakis on A Linux Dev Environment on Windows with WSL 2, Docker Desktop and More, I got inspired about Linux development under Windows, using WSL2
Within Docker Desktop, I navigated to Resources / WSL Integration
, and saw:
You don't have any WSL 2 distro. Please convert a WSL 1 distro to WSL 2, or install a new distro and it will appear here.
So, back to my new-found friend, the Windows Terminal
wsl -l -v
Gave the output:
NAME STATE VERSION
* Legacy Stopped 1
Ubuntu-20.04 Stopped 1
Ubuntu-18.04 Stopped 1
Crucially, passing the -v
flag, we see that these are all WSL1 images. The conversion from WSL1 to 2 should be possible with:
wsl --set-version Ubuntu-20.04 2
Output:
Conversion in progress, this may take a few minutes...
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
The system cannot find the path specified.
So, we're back to a "can't find the path" type error
At this point, I'm happy to terminate my problematic instances, so I run:
wsl --unregister Ubuntu-20.04
wsl --unregister Ubuntu-18.04
And then set any future WSL distros to use version 2, with:
wsl --set-default-version 2
Following one of the other recommendations in the Nick Janetakis video, I opted to install the latest release of Power Toys
After a reboot for good measure, the output of wsl -l -v
is:
NAME STATE VERSION
* Legacy Stopped 1
With PowerRun installed, typing Alt
+ Space
meant that I could open the Microsoft Store easily
Once installed, I click Launch
But I get our very similar error again:
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80070003
Error: 0x80070003 The system cannot find the path specified.
Press any key to continue...
I removed the .wslconfig
I had been experimenting with, and got a different error:
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0xc03a001a
Error: 0xc03a001a The requested operation could not be completed due to a virtual disk system limitation. Virtual hard disk files must be uncompressed and unencrypted and must not be sparse.
As a side note, the issue was still present even after un-installing and re-installing.
This blog post was very helpful in diagnosing the issue of disk Compression being enabled.
My path was C:\Users\Nick\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu20.04onWindows_79rhkp1fndgsc
Once I turned off the Compression, I was able to Launch Ubuntu 20.04
Then set my default:
wsl --set-default Ubuntu-20.04
Then back to Docker Desktop
Although I've set Ubuntu-20.04 as the default WSL distro, I prefer to be doubly sure, and toggle on:
Enabled integation with additional distros: Ubuntu-20.04
Now the output of wsl -l -v
NAME STATE VERSION
* Ubuntu-20.04 Running 2
docker-desktop-data Running 2
Legacy Stopped 1
docker-desktop Running 2