2021-04-02 2min read

Docker on ArchWSL

Problem: Running Docker on ArchWSL doesn’t work by default. ArchWSL doesn’t allow systemd services.

Background image
docker info
# ERROR: Cannot connect to the Docker daemon
# at unix:///var/run/docker.sock. Is
# the docker daemon running?
sudo systemctl start docker
# System has not been booted with systemd as init
# system (PID 1). Can't operate.
# Failed to connect to bus: Host is down
Trying to use systemctl start on ArchWSL will result in an error.

Solution: genie-systemd

genie-systemd can be used to run systemd services like Docker. Note that Docker itself requires WSL2.

# Download genie-systemd from this page
open https://github.com/arkane-systems/genie/releases

# Install it
pacman -U genie-systemd*.pkg.tar.zst

# Run systemctl via genie
sudo genie -c systemctl start docker
# It should work now 🎉
docker info
# Containers: 1
# Server Version: 19.03.11-ce
# Storage driver: overlay2
# ...

About genie

genie, or genie-systemd, is a workaround to run systemd services in WSL2. It can be installed by downloading the .tar.zst package from the project’s GitHub releases page.

Not running WSL2?

Here’s a guide on converting an WSL1 installation to WSL2.

Other alternatives

I’ve found that genie works the best for my case. However, there are also other ways to get Docker and systemd working:

  • ArchWSL2 is a fork of ArchWSL with support for systemd.
  • The ArchWSL wiki has some resources in its Known issues page.
  • systemdctl-alt is an alternate fork of systemd which will work with WSL1 and WSL2.