Die meisten kennen vermutlich «Docker Desktop für Windows AMD64». Dieses offizielle Installationsprogramm installiert ein schönes GUI. Darum geht es in diesem Artikel nicht!
Hier geht es darum, wie man docker in der WSL2-Kommandozeile direkt installiert, ohne GUI, ohne schöne Icons.
Folgende Punkte sind zur Installation notwendig:
- Windows 10, Version 1903, Build 18362 oder neuer (kam im Mai 2019 raus)
- WSL2. Installiert man über eine PowerShell-Kommandozeile mit Administratorrechten mit:
wsl --install
- WSL2 zur Standard-Version machen:
wsl --set-default-version 2
Nun muss man die PowerShell-Kommandozeile schliessen und Windows neu starten. - Nach dem Windows-Neustart öffnet man erneut eine PowerShell-Kommandozeile mit Administratorrechten und installiert eine Linux-Distro unter WSL2, z.B. «Ubuntu» mit:
wsl --install
ubuntu
Jetzt kann man das neu verfügbare WSL2
(Windows Subsystem for Linux) über das entsprechende Icon im Startmenu starten.
Hinweis für Benutzer von VMWare Workstation:
Wer sein Windows zu Testzwecken in einer virtuellen Maschine betreibt, darf nicht vergessen, dass für die Ausführung von WSL2 die folgenden VM-Prozessoreinstellungen vor dem virtuellen Windows-Start zwingend nötig sind:
Bei der Erstverwendung der Distro in der WSL2 wird man aufgefordert für diese neue Distro einen Benutzer und ein Passwort zu setzen:
In diesem Beispiel wurde als Benutzer: my_ubuntu_user gewählt, welchen man später im WSL2-Ubuntu-Prompt wieder erkennt. - Die eben installierte Linux-Distro innerhalb WSL2 (meist «Ubuntu») sollte man auf den neuesten Softwarestand aktualisieren mit:
sudo apt update && sudo apt upgrade -y
(Hinweis: Alle Befehle die man ab jetzt unter WSL2/Ubuntu eingibt, sind normale Linux-/Ubuntu-Befehle, wie man sie auch in einer Original-Ubuntu-Installation eingeben würde.) - Damit man docker direkt in WSL2 installieren kann – und damit kein «Docker Desktop GUI unter Windows» braucht – sind folgende Voraussetzungen nötig
(alle folgenden Linux-/Ubuntu-Befehle immer auf 1 Zeile ohne Umbrüche eingeben):sudo apt install apt-transport-https ca-certificates curl software-properties-common -y
(Hinweis: Unter Ubuntu/Linux spricht man bei zusätzlich zu installierender Software von Paketen. Hier werden die Pakete mit dem Namen „apt-transport-https“, „ca-certificates“, „curl“ und „sofware-properties-common“ installiert.)
Die nächsten Punkte 6 und 7 beinhalten Befehle die eine neue Docker-Repository-Quelle für die aktuelle Ubuntu-Version einrichten und sicherstellen, dass nur authentische und signierte Pakete installiert werden: - Den offiziellen Docker GPG Schlüssel herunterladen und hinzufügen:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
(Mit dem lokal hinterlegten Original-GPG-Schlüssel wird sichergestellt, dass die neu heruntergeladenen Pakete authentisch und unverändert sind.) - Das Ubuntu Repo einrichten:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
(Damit wird die Ubuntu Repository-Quelle für Docker-Pakete von der offiziellen Docker-Website angegeben. Nur authentische und überprüfte Pakete für dieamd64
-Architektur (64-Bit) werden installiert. Eine neue Dateidocker.list
wird erstellt, welche das Docker-Repository zur Liste der Paketquellen hinzufügt. Dieses wird beim Ausführen vonapt-get update
undapt-get install
verwendet.) - Nun kann man docker in WSL2 installieren, mit:
sudo apt update
sudo apt install docker-ce -y - Damit docker als Dienst jeweils automatisch zusammen mit WSL2 startet:
sudo service docker start
Mit folgenden Befehlen kann man prüfen, ob docker in WSL2 läuft, z.B. mitsudo docker ps -a
oder um alle vorhandenen docker container anzeigen lassen:sudo docker stats
(nach der Neuinstallation erscheinen logischerweise noch keine laufenden Container mit ständig aktualisierten Details wie die CPU-Auslastung. Dieser Anzeige kann man mit der Tastenkombinatin Ctrl + C abbrechen und zum grünen Prompt zurückkehren.)
Prüfen ob docker richtig eingerichtet wurde und läuft:sudo docker --version
Folgende Konfigurationsanpassungen sind nützlich aber nicht zwingend nötig:
a) Eine Datei daemon.json
erstellen mitsudo nano /etc/docker/daemon.json
und folgende 3 Zeilen copy & pasten oder abtippen:{
"host": "unix:///var/run/docker.sock"
}
Änderungen im Ubuntu-Texteditor „nano“ speichert man durch drücken von Ctrl + X und eintippen von Y gefolgt von ENTER zur Bestätigung des angezeigten Dateinamens und zur Speicherung der eben gemachten Eingaben.
(Diese zentrale Konfigurationsdatei ermöglicht es, verschiedene Einstellungen und Optionen für den Docker-Daemon zu definieren, ohne dass man sie direkt in der Befehlszeile angeben muss.
Die Host-Zeile legt fest, dass Docker über den Unix-Socket /var/run/docker.sock
kommunizieren soll, eine effiziente und sichere Methode für die Interaktion zwischen dem Docker-Daemon und den Docker-Clients.)
b) Damit man als Windows-Benutzer nicht vor jedem WSL2-Befehl sudo
eintippen muss
(um für den nächsten Befehl an höhere Benutzerrechte zu gelangen):sudo usermod -aG docker $USER
(Dieser Befehl fügt den aktuell angemeldeten Benutzer zur Gruppe docker
hinzu.)
-> Diese Gruppenzuteilung wird erst nach dem nächsten WSL2-Start aktiv!
Dank dem so installierten docker wäre nun folgendes Gedankenspiel möglich:
Man könnte sich nun einen Ubuntu-docker-Container installieren:docker run -it ubuntu bash
Das wäre dann z.B. Windows 10 mit VMware Workstation -> Windows 11 als virtuelle Maschine -> WSL2 unter Windows 11 -> Ubuntu in WSL2 -> docker in Ubuntu -> Ubuntu als Container.
Was vermutlich früher oder später nicht zur Übersichtlichkeit und Verständlichkeit beiträgt. .-)
Viel nützlicher sind nun Container, die man aus dem riesigen Angebot bei https://hub.docker.com/ oder https://www.linuxserver.io/our-images finden und installieren kann. Ein konkretes Beispiel habe ich hier dokumentiert: https://ictknow-how.ch/blog/2025/02/27/laeuft-musicbrainz-docker-auch-direkt-unter-windows-wsl2-ohne-docker-desktop/
Mit dem Befehlexit
gelangt man aus dem Ubuntu-Container zurück in die WSL2-Umgebung.
Mit einem weiteren exit
verlässt man dann die WSL2-Umgebung selber und gelangt zurück zu Windows.
—
Zum Abschluss noch ein kleiner Trick. Vermutlich fragt man sich früher oder später wo eigentlich diese Daten in der WSL2 auf dem Windows-Rechner gespeichert werden. Dazu kann man in der WSL2 in einem beliebigen Verzeichnis wie z.B. /self-created-dir$
den Windows-Explorer mit explorer.exe .
starten:
Der Explorer zeigt in der Adressleiste unter \\wsl.localhost
den kompletten Pfad zum aktuellen Verzeichnis in WSL2 an.
Man kann sich auch den Inhalt von Verzeichnissen aus dem Host-System anzeigen lassen. Vorausgesetzt WSL2 hat ausreichend Leserechte dafür. Ein Beispiel dafür wäre:ls /mnt/c/Users/Public/*
Ich hoffe, dass hilft dem einen oder anderen Leser bei der Installation von docker unter WSL2.
Bei Fragen helfe ich – so gut wie möglich – gerne weiter. Einfach einen Kommentar hinterlassen.