Skip to content

Instantly share code, notes, and snippets.

@Athou
Last active February 16, 2025 15:59
Show Gist options
  • Save Athou/022c67de48f1cf6584ce6c194af71a09 to your computer and use it in GitHub Desktop.
Save Athou/022c67de48f1cf6584ce6c194af71a09 to your computer and use it in GitHub Desktop.
install docker in Debian 11/WSL2 without Docker Desktop
# install docker in Debian 11/WSL2
# uses systemd-genie since docker requires systemd but it's not available for WSL
# this is an alternative to Docker Desktop
# prerequisites
sudo apt-get update
sudo apt-get dist-upgrade
sudo apt-get install ca-certificates curl wget gnupg lsb-release apt-transport-https
# systemd-genie requires dotnet runtime, add Microsoft repo
wget https://packages.microsoft.com/config/debian/11/packages-microsoft-prod.deb -O /tmp/packages-microsoft-prod.deb
sudo dpkg -i /tmp/packages-microsoft-prod.deb
rm /tmp/packages-microsoft-prod.deb
# add systemd-genie repo
sudo wget -O /etc/apt/trusted.gpg.d/wsl-transdebian.gpg https://arkane-systems.github.io/wsl-transdebian/apt/wsl-transdebian.gpg
sudo chmod a+r /etc/apt/trusted.gpg.d/wsl-transdebian.gpg
echo -e "deb https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main
deb-src https://arkane-systems.github.io/wsl-transdebian/apt/ $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/wsl-transdebian.list > /dev/null
# install systemd-genie
sudo apt-get update
sudo apt-get install systemd-genie
# install docker
curl https://get.docker.com | sh
# allow docker commands to be used without sudo
sudo usermod -aG docker $USER
# nftables is the default implementation of iptables on Debian but requires linux kernel 5.8+ which is not available on WSL2
# https://patrickwu.space/2021/03/09/wsl-solution-to-native-docker-daemon-not-starting/
sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
# install docker-compose 1.x
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
# run systemd-genie when wsl starts
echo "genie -i" >> ~/.bashrc
# restart wsl
exit
wsl --shutdown
wsl
docker run hello-world
@ritkit
Copy link

ritkit commented Dec 19, 2024

Apparently Docker is now detecting WSL installations and skipping/aborting the script.

# Executing docker install script, commit: c84dd77e3bbab4434b0ca76ca40597084ef228fe

WSL DETECTED: We recommend using Docker Desktop for Windows.
Please get Docker Desktop from https://www.docker.com/products/docker-desktop/


You may press Ctrl+C now to abort this script.
+ sleep 20

The script would refuse to run even after waiting 20 seconds.

@PabloTheDeveloper
Copy link

PabloTheDeveloper commented Dec 22, 2024

I only needed:

sudo sh get-docker.sh```

To get this running on Debian 12 (bookworm) on WSL2.

@abhcx
Copy link

abhcx commented Feb 4, 2025

There is a docker.io package on debian. I installed that instead of script you shared, worked fine. What would be the difference?

I did that because shell script was failing with timeouts.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment