Tags: Container, Linux, Windows 10
Die Version 2 des WSL bringt nicht nur eine neue Architektur auf Basis einer virtuellen Maschine, einen eigenen Linux-Kernel und ein natives EXT4-Dateisystem, sondern auch eine engere Integration mit Docker. Auf diese Weise lassen sich Linux-Container sehr einfach im Kontext von Windows nutzen.
Container verpacken Applikationen zusammen mit Systemdiensten oder sonstigen Services, von denen sie abhängen. Dazu gehört übrigens auch eine eigene Instanz des File-Systems. Dies vereinfacht und beschleunigt das Deployment, weil Anwendungen ihre eigene Umgebung mitbringen und damit nicht von der Konfiguration des Host-Systems abhängen.
Als Marktführer hat sich die Firma Docker etabliert. Sie definiert das Packaging-Format für Container und stellt darüber hinaus mit Docker Hub auch ein Repository für Images zur Verfügung. Für das Management mehrerer Container, unter anderem für Lastverteilung oder Failover, entwickelt sich Kubernetes zum Standard.
Unter Linux sind Container schon länger populär und stärker verbreitet als unter Windows, das erst mit Server 2016 eine entsprechende Unterstützung erhielt. Das WSL 2 verbessert die Unterstützung für Linux-Container, indem es den Ressourcenverbrauch (RAM, CPU-Auslastung) auf das tatsächlich benötigte Maß beschränkt und insgesamt die Performance erhöht.
Durch das große Angebot an vorgefertigten Container-Images für Linux kann man diverse Services im Kontext von Windows bereitstellen. Das gilt etwa für Datenbanken, Web-Server oder den ganzen LAMP-Stack, den man nicht mehr auf herkömmliche Weise in das OS installieren muss.
WSL 2 für Docker vorbereiten
Falls noch nicht geschehen, installiert man im ersten Schritt das Subsystem für Linux unter Windows 2004, Server 2004 oder einer neueren Version (siehe dazu meine Anleitung). Standardmäßig wird das WSL dabei für die Version 1 konfiguriert. Daher sollte man nach dem Hinzufügen einer Distribution über den Microsoft Store prüfen, ob eine Konvertierung zu WSL 2 erforderlich ist. Dies lässt sich über
wsl -l -v
feststellen. Mit den Parametern --set-default-version <version> bzw. -s <Distro> <version> kann wsl.exe die Version 2 als Standard festlegen oder für eine bestimmte Linux-Distribution erzwingen.
Docker Desktop installieren
Nun steht die Installation von Docker Desktop für Windows an. Die Software kann man von der Website des Herstellers herunterladen, anschließend führt man das Setup aus. Solange es nur darum geht, Linux-Container im Kontext von WSL 2 auszuführen, dann muss man das Windows-Feature Container nicht aktivieren.
Nachdem man Docker gestartet hat, öffnet man über das Tray-Applet die Einstellungen und stellt sicher, dass Use the WSL 2 based engine aktiviert ist.
Falls man versucht hat, Docker unter einem Standardbenutzer auszuführen, dann scheitert dies an fehlenden Berechtigungen. Daher muss man Konten, die Docker starten sollen, in die lokale Gruppe docker-users aufnehmen. Standardmäßig enthält sie nur den User, der Docker installiert hat.
Bevor man einen Container in einer Distribution von WSL 2 startet, sollte man in den Docker-Einstellungen unter Resources => WSL integration nachsehen, ob Docker für das gewünschte Linux aktiviert ist. Standardmäßig ist das nur für die Default-Distribution der Fall.
Container ausführen
Ist auch diese Voraussetzung gegeben, dann kann man die Linux-Distribution am Beispiel von Ubuntu 18.04 mit
wsl -d ubuntu-18.04
starten.
Um einen ersten Container zu erzeugen und die Funktionstüchtigkeit der Installation zu prüfen, bietet Docker einige Beispiel-Images an. So richtet der Befehl
docker run -dp 80:80 docker/getting-started
einen Container ein, in dem ein nginx-Web-Server läuft und der die Docker-Dokumentation enthält. Der Aufruf kann sowohl von der Windows-Seite, etwa in PowerShell, oder aus der bash unter Linux erfolgen.
Mit ihm verbindet man sich, indem man entweder unter Windows im Browser http://localhost aufruft (weil in diesem Fall Port 80 des Containers auf Port 80 des Host zugeordnet wurde) oder indem man die Unix-Shell im Container öffnet.
Beide Aktionen kann man über die entsprechenden Icons in der Docker-Konsole veranlassen und erspart sich im Fall der CLI die Eingabe der Container-ID für docker exec.
Neben solchen simplen Anwendungen gibt es zahlreiche vorgefertigte Images, die man mit Hilfe des docker-Befehls herunterladen und umgehend im Container starten kann. Darunter finden sich etwa auch komplette LAMP-Stacks.
Täglich Know-how für IT-Pros mit unserem Newsletter
Verwandte Beiträge
- Container auf Proxmox bereitstellen
- Docker-Container in VMware Workstation betreiben und mit vctl steuern
- Version 1.0 mit neuen Features: Windows Subsystem for Linux kommt künftig aus dem Store
- Windows Subsystem für Linux über die Kommandozeile (wsl.exe) installieren
- GUI-Anwendungen ausführen im Windows Subsystem für Linux (WSL)
Weitere Links
1 Kommentar
Guten Tag Herr Sommergut,
vielen Dank für diese top Anleitung!
Mein Mainboard hat zwei Netzwerkkarten, wie weise ich Docker die eine und dem "Rest-Windows" die andere Karte zu?
Ich habe versucht die Virtuellen Switche in Hyper V dementsprechend umzustellen, leider lässt das Windows nicht zu.
Der 30TB Pc soll weiterhin als Office PC & Datenspeicher "normal genutzt" werden und nun eben nebenbei Docker mit Pihole, Nextcloud und einem KNX-Visu-Server (cometvisu) laufen lassen.
Falls Sie mir helfen könnten wäre ich sehr dankbar!
Vielen Dank und viele Grüße,
Achim