Technotes

Technotes for future me

Running Docker on WSL2 without Docker Desktop

This is a straight to the point guide on how to make Docker CE run fully on WSL2.

What you will get

  • A full-fledged Docker installation on WSL2
  • Docker Daemon automatic start without any crazy hacks

What you will not get

  • Docker Daemon sharing between Windows and WSL (i.e. you cannot run docker from Windows PowerShell)
  • Docker Daemon sharing between WSL distributions

Prerequisites

I will consider that you already have WSL2 working, and you are using Ubuntu as your distribution. Guide

Install Docker CE on Ubuntu by following the official guide

Ensures not older packages are installed

sudo apt-get remove docker docker-engine docker.io containerd runc

Ensure pre-requisites are installed

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

Adds docker apt repository

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

Adds docker apt key

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

Refreshes apt repos

sudo apt-get update

Installs Docker CE

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

Perform the post-installation steps

Ensures docker group exists

sudo groupadd docker

Ensures you are part of it

sudo usermod -aG docker $USER

Now, close your shell and open another for taking the group changes into account If you are running Ubuntu 22.04, you will also need to run the following command:

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy

If you are running Windows 11, you can use a brand-new feature of WSL to start the Docker Daemon during the initialization. You only need to add:

[boot]
command = "service docker start"

To your /etc/wsl.conf within your WSL distribution. Then, restart it with wsl.exe --shutdown. To verify that it works, you can run docker version. If you do not receive any permission denied error, you are good.

Source: https://dev.to/felipecrs/simply-run-docker-on-wsl2-3o8

Last updated on 26 Oct 2026
Published on 8 Sep 2022
Edit on GitHub