Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker

Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker
Die Version 2 des WSL bringt nicht nur eine neue Archi­tektur auf Basis einer virtu­ellen Maschine, einen eigenen Linux-Kernel und ein natives EXT4-Datei­system, sondern auch eine engere Inte­gration mit Docker. Auf diese Weise lassen sich Linux-Container sehr einfach im Kontext von Windows nutzen.

Container verpacken Applikationen zusammen mit System­diensten 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 Ver­fü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 Ressourcen­verbrauch (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.

Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker

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.

Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker

Falls man versucht hat, Docker unter einem Standard­benutzer 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.

Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker

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.

Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker

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 Funktions­tü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.

Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker

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.

Der Benutzer besitzt nicht den benötigten Anmeldetyp auf diesem Computer Docker

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.