Last active
November 17, 2024 04:39
-
-
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 |
Great, tks!
Just a note: You don't need systemd-genie
anymore. You can boot systemd automatically in WSL2
Just create an /etc/wsl.conf
and set it to start on boot,
sudo touch wsl.conf && sudo echo -e "[boot]\nsystemd=true\n" >| /etc/wsl.conf && sudo shutdown -r now
after reboot
sudo systemctl list-unit-files --type=service
Thank you! Very useful
Guess you don't need to switch to iptables-legacy
anymore
Just tested without and confirmed, the kernel is 5.15
now
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Had to install curl, wget and lsb_release
But otherwise worked! you saved me many hours