How To Install Docker On WSL

This is the quickest way to install Docker on WSL and sync it with your Docker containers.


Configure Docker for Windows

First, we need to expose a port in Docker for Windows for it to work in WSL.

docker for windows

Install Docker

This is how you install Docker in your WSL environment - it is taken from Docker’s installation docs. Just copy and paste basically. This is for Ubuntu 18.04.

# Update the apt package list.
sudo apt-get update -y

# Install Docker's package dependencies.
sudo apt-get install -y \
    apt-transport-https \
    ca-certificates \
    curl \
    software-properties-common

# Download and add Docker's official public PGP key.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

# Verify the fingerprint.
sudo apt-key fingerprint 0EBFCD88

# Add the `stable` channel's Docker upstream repository.
#
# If you want to live on the edge, you can change "stable" below to "test" or
# "nightly". I highly recommend sticking with stable!
sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

# Update the apt package list (for the new apt repo).
sudo apt-get update -y

# Install the latest version of Docker CE.
sudo apt-get install -y docker-ce

# Allow your user to access the Docker CLI without needing root access.
sudo usermod -aG docker $USER

After this, close and open a new terminal, so you can run Docker without sudo.

Install Docker Compose

Installing Docker Compose can be done via PIP or the normal apt-get way.

# Install Python 3 and PIP.
sudo apt-get install -y python3 python3-pip
pip3 install --user docker-compose

# Or install only Docker Compose
sudo apt-get install docker-compose

Add bin to your PATH

You need to add /home/<username>/.local/bin to your PATH.

Edit your ~/.profile file with nano ~/.profile and add a new line anywhere in the file. Add the text export PATH="$PATH:$HOME/.local/bin"

Run source ~/.profile to activate your new path.

Confirm that it works by running echo $PATH.

Add DOCKER_HOST

You might need to export the following variable to make it work. You can write it either in ~/.zshrc or in ~/.bashrc.

export DOCKER_HOST=tcp://0.0.0.0:2375

Modify WSL configurations

If you are running Windows 10 18.03+ or newer, it might be good to make some changes. sudo nano /etc/wsl.conf to edit your configurations file.

[automount]
root = /
options = "metadata"

This will allow you to work from /c instead of /mnt/c, and also fixes some of your permissions. You need to sign out of Windows to make this work.