Skip to main content

Install Docker on Windows 11 with WSL Ubuntu 22.04

This is to install Docker within Ubuntu WSL without using the Windows Docker application.
Follow the below steps.

Install Ubuntu 22.04 WSL


1. Enable Windows Subsystem for Linux and Virtual Machine platform

Go to Control Panel -> Programs -> Programs and Features -> Turn Windows features on or off

Enable Windows Subsystem for Linux and Virtual Machine platform




2. Switch to WSL 2

Open Powershell and type in the below command.

wsl --set-default-version 2


If you don't have WSL 2, download the latest WSL 2 package and install it. 

3. Install Ubuntu

Open Microsoft Store and search for Ubuntu. Select the version you intend to install. I'd use the latest LTS version Ubuntu 22.04. Click on the Get button.

Microsoft store Ubuntu

It will take a couple of minutes to download and install.

4. Open up the installed Ubuntu version that was installed.
Ubuntu WSL



If you get an error like the below image, make sure to install the WSL2 Kernel update


Ubuntu 22.04 WSL error
If it's an older Ubuntu version the error message would be something like the image below.
Ubuntu 20.04 WSL error
Error: WSL 2 requires an update to its kernel component.


Installing the WSL2 kernel update should fix this issue. Then close the Ubuntu window and open it up again.

It will ask for the Language, username, and password like below.

Ubuntu 22.04 WSL

Ubuntu 22.04 WSL select language

Ubuntu 22.04 WSL Account

Ubuntu 22.04 WSL mount settings
In the mount settings, you can leave the defaults.
Ubuntu 22.04 WSL applying changes
It will take a minute or two to apply the changes.
Ubuntu 22.04 WSL setup complete
Hit enter to reboot Ubuntu WSL.
Ubuntu 22.04 WSL

Now, we have installed the WSL 2.


Install Docker within Ubuntu WSL

Time to install Docker, same following steps are mentioned in the official Docker documentation.

5. Run the apt update command to get the updated and install some required packages.

sudo apt-get update
sudo apt-get install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release

6. Add CPG keys for the official docker repository.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

7. Add Docker repository to APT.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

8. Install Docker

sudo apt-get update

sudo apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

9. Start the docker service

sudo service docker start

10. Check the docker service status

sudo service docker status

If it is Ubuntu 22.04, then it might have an issue with the iptables version. When you are checking the status, it might still show up not running. If that is the case, make sure to switch the iptables to legacy.

Run the below command to change the default iptables version.

sudo update-alternatives --config iptables

switch ip tables

Select the iptables-legacy by entering option 1. Then hit enter.

Then start the docker service again by repeating step 9 above.

11. Add the user to the docker user group.

sudo usermod -aG docker ${USER}

su - ${USER}

12. Now, that everything is complete, feel free to use docker!

docker ps



Issues and troubleshooting



If you still can't run the docker service, check the WSL version in Powershell.

wsl -l -v

Check wsl version

If you have version 1, WSL 1 did not support running Docker within the Ubuntu subsystem on its own. The WSL 1 required to use Windows Desktop Docker app to be installed and use windows binaries to run Docker within WSL. This is great if you need to keep the 2 docker services in sync.

If you want to run Docker within WSL without having the windows Docker client, you have to update it to WSL2. 

I would uninstall the current Ubuntu installation from Settings -> Apps -> Ubuntu. 
Then switch the WSL version as per step 2 above, then install the Ubuntu again.




Comments

Post a Comment

Popular posts from this blog

How to fix SSLHandshakeException PKIX path building failed in Java

TL ; DR 1. Extract the public certificate of the website/API that you are trying to connect from your Java application. Steps are mentioned in this post 2. Use the Java keytool to install the extracted certificate into the "cacerts" file (Trust store) keytool -import -trustcacerts -alias <domain name> -file <public certificate>.cert -keystore /path_to_java_home/jre/lib/security/cacerts -storepass changeit 3. Restart your Java application Exception A typical exception stack trace would look like below. javax.net.ssl. SSLHandshakeException : sun.security.validator.ValidatorException: PKIX path building failed : sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1959) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:302) at sun.security.ssl.Handshake

Wget download pause and continue

If you are downloading a file with the wget command, sometimes you may need to pause it and start it back from the place where you paused rather than starting from the beginning. So you don't have to re-download the entire package. Wget can do this just like downloading from a web browser. Let's say I need to download a file from the web. So I'm using the wget command as follows. Download wget <url for the file> Pause To pause the download just hit ctrl + c  the shortcut to terminate the current command. Continue This is going to be the same command but -c switch to continue from the previous download. wget -c <url for the file> Simple as that! Yeah, you can download from a web browser, but this is more fun and easier 😋 If you are lazy like me, wget saves a couple of clicks.