Last active
February 16, 2025 15:59
-
-
Save Athou/022c67de48f1cf6584ce6c194af71a09 to your computer and use it in GitHub Desktop.
install docker in Debian 11/WSL2 without Docker Desktop
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# 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 |
I only needed:
sudo sh get-docker.sh```
To get this running on Debian 12 (bookworm) on WSL2.
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
Apparently Docker is now detecting WSL installations and skipping/aborting the script.
The script would refuse to run even after waiting 20 seconds.