Für unsere lokale Entwicklungsumgebung kann Docker direkt innerhalb von WSL installiert werden. Docker Desktop wird dafür nicht benötigt. Das ist besonders sinnvoll, wenn die Entwicklungsumgebung schlank bleiben soll und Docker wie auf einem Linux-Server direkt über die Konsole verwendet wird.
Die folgende Anleitung geht von Ubuntu unter WSL 2 aus.
Zuerst sollte geprüft werden, ob WSL mit Version 2 verwendet wird.
wsl --list --verboseDie verwendete Ubuntu-Distribution sollte mit Version 2 angezeigt werden. Falls dort noch Version 1 steht, kann sie umgestellt werden:
wsl --set-version Ubuntu 2Anschließend Ubuntu starten:
wslinnerhalb von Ubuntu wird zuerst das System aktualisiert:
sudo apt update
sudo apt upgrade -yDanach werden einige benötigte Grundpakete installiert:
sudo apt install -y ca-certificates curl gnupg lsb-releaseDocker sollte nicht aus den normalen Ubuntu-Paketquellen installiert werden, sondern über das offizielle Docker-Repository. Dadurch wird eine aktuelle Docker-Version installiert. Docker empfiehlt dafür die Einrichtung des eigenen APT-Repositorys.
Zuerst wird der Ordner für die Paket-Schlüssel angelegt:
sudo install -m 0755 -d /etc/apt/keyringsDann wird der offizielle Docker-Schlüssel heruntergeladen:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpgDie Datei bekommt anschließend die passenden Leserechte:
sudo chmod a+r /etc/apt/keyrings/docker.gpgDanach wird das Docker-Repository eingetragen:
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/nullAnschließend werden die Paketquellen neu geladen:
sudo apt updateNun kann Docker installiert werden:
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginDamit werden Docker Engine, die Docker CLI, Containerd, Buildx und Docker Compose installiert.
Docker läuft als Dienst innerhalb von WSL. Der Dienst kann manuell gestartet werden:
sudo service docker startDanach kann geprüft werden, ob Docker funktioniert:
docker --version
docker compose versionEin einfacher Funktionstest ist:
sudo docker run hello-worldWenn Docker korrekt installiert ist, wird ein Test-Container gestartet und eine Erfolgsmeldung ausgegeben.
Damit Docker-Befehle nicht jedes Mal mit sudo ausgeführt werden müssen, wird der eigene Benutzer zur Gruppe docker hinzugefügt:
sudo usermod -aG docker $USERDanach muss WSL einmal vollständig beendet und neu gestartet werden. Dazu in PowerShell ausführen:
wsl --shutdownAnschließend Ubuntu wieder starten und testen:
docker run hello-worldWenn der Befehl ohne sudo funktioniert, ist die Benutzerberechtigung korrekt eingerichtet.
Da Docker Desktop nicht verwendet wird, startet Docker nicht automatisch über Windows. Der Docker-Dienst muss innerhalb von WSL laufen.
Eine einfache Variante ist, Docker beim Start der Shell automatisch zu starten. Dazu wird die Datei ~/.bashrc geöffnet:
nano ~/.bashrcAm Ende der Datei wird Folgendes ergänzt:
if ! service docker status > /dev/null 2>&1; then
sudo service docker start
fiDanach speichern und die Konsole neu öffnen.
Wichtig: Diese Variante kann beim Start der Konsole nach dem Linux-Passwort fragen, weil der Docker-Dienst mit sudo gestartet wird.
Alternativ kann systemd in WSL aktiviert werden. Dann kann Docker wie auf einem normalen Linux-System über systemctl verwaltet werden.
Dazu wird die Datei /etc/wsl.conf geöffnet:
sudo nano /etc/wsl.confFolgender Inhalt wird eingetragen:
[boot]
systemd=trueDanach WSL vollständig beenden:
wsl --shutdownUbuntu erneut starten und Docker aktivieren:
sudo systemctl enable docker
sudo systemctl start dockerPrüfen:
systemctl status dockerDiese Variante ist sauberer, wenn Docker regelmäßig in WSL genutzt wird.
Docker-Projekte sollten möglichst direkt im WSL-Dateisystem liegen, zum Beispiel unter:
~/projectsDer Ordner kann so angelegt werden:
mkdir -p ~/projects
cd ~/projectsProjekte unter /mnt/c/... funktionieren zwar grundsätzlich, sind aber bei Docker, Composer und vielen Dateioperationen oft langsamer und fehleranfälliger.
Nach der Installation steht Docker direkt innerhalb von WSL zur Verfügung. Docker Desktop wird nicht benötigt. Projekte können nun über Docker Compose gestartet werden, zum Beispiel mit:
docker compose up -dDamit ist die lokale Docker-Umgebung schlank, servernah und gut für die Arbeit mit Git, Composer und lokalen Entwicklungsprojekten geeignet.