Docker CE + WSL2 - Potentielle Alternative für Docker Desktop für Windows

Nach Podman versuche ich es mit Docker + WSL2 als potentielle Alternative für Docker Desktop unter Windows.

Docker CE + WSL2 - Potentielle Alternative für Docker Desktop für Windows

Part 1: [Overview] Docker Desktop - Potentielle Alternativen (Windows)
Part 2: Podman - Potentielle Alternative für Docker Desktop für Windows
Part 3: Docker-CE + WSL2 - Potentielle Alternative für Docker Desktop für Windows
Part 4: Ranger Desktop - Potentielle Alternative für Docker Desktop für Windows

Wieso Docker? Wir wollen doch Weg davon!

In dieser Serie geht es um einen Ersatz für Docker Desktop. Wie bereits im Eingangs-Beitrag [Overview] Docker Desktop Potentielle Alternativen erwähnt, ist Docker Desktop für Windows (oder Mac OS) nur noch bei Erfüllen von betimmten kriterien Kostenlos. In der Regel werden die meisten Unternehmen über die vorgegebenen Metriken liegen, wodurch es nicht mehr kostenfrei sein wird.

Ich bin keines Wegs dagegen für Software zu bezahlen. Docker Desktop für Windows ist definitiv jeden Cent wert, das steht nicht zur Diskussion.

Die Docker Engine an sich ist weiterhin kostenlos und ist für meinen Einsatzzweck daher einen Blick wert. Die hier beschriebene Integration ist der von Podman sehr ähnlich. Docker wird in einem WSL2 Container installiert.

Docker CE in WSL2

Wir brauchen an dieser Stelle wieder einen WSL2 Container. Ich habe mir einen WSL2 Container auf Basis von Ubuntu 20.04 per WSL Manager erstellt.

Die Umgebung kann natürlich aus dem Windows Store installiert werden und wie im Eingangs-Beitrag erklärt auf WSL2 aktualisiert werden.

Für die weitere Installation auf Windows 10 diente mir folgender dev.to Beitrag. Der verlinkte Artikel ist kurz und bündig. Im Abschnitt Bonus wird auf die Installation von docker-compose und docker credential helper eingegangen. Sofern die Anleitung komplett abgearbeitet ist, steht nun eine WSL2 Umgebung mit docker und docker-compose zur Verfügung.

Docker in WSL2 unter Windows

Auch hier kann per wsl Befehlt auf docker zugeriffen werden.

wsl command to execute remote command in wsl container

Ich empfand die Installation von Docker in WSL2 angenehmer und einfacher verglichen mit podman. Podman machte mir persönlich mehr Spaß bei der Einrichtung, docker in einer ubuntu Umgebung ist mittlerweile wie der wöchentliche Döner. Man kennt es, man mag es, man (od. Schuster) bleibt bei seinen Leisten. Eine direkte integration per docker.exe und einem offenen Socket sollte möglich sein, leider habe ich das nicht mehr recherchiert und daher nicht weiter betrachtet.

Docker CE + WSL2 + Remte Container in VSCode

Die wichtigste Anforderung für mich, ist die Integration in VSCode über die Remote Container extension. Ich habe auf meiner lokalen Maschine/Host keine x verschiedene nodejs Versionen installiert. Jeglich Client-Seitige Entwicklung erfolgt bei mir in Remote Containern inkl. den dafür nötigen Tools.

Mit den richtigen Einstellungen für die Remote Container Extension, ist mein bisheriger Entwicklungsflow für Client-Seitige Projekte möglich. Ähnlich wie bei podman muss die Ausführung in WSL aktiviert und die dedizierte WSL2 Umgebung angegeben werden.

vscode remote container settings for docker ce

Im Gegensatz zu podman, werden hier die docker nativen - docker und docker-compose - Befehle verwendet. Der devcontainer startet wie gewohnt und ist nach kurzer Zeit einsatzbereit.

vscode remote container with wsl2 + docker ce

Das Ergebnis ist wie in dem Screen oben zu sehen ist erfolgreich. In den 2 Tagen wo ich mit dieser Variante gearbeitet hatte, konnte ich keine großen Probleme feststellen. Nach einem Neustart vom Host (Windows 10) konnte ich ein Paarmal nicht sofort den devcontainer starten, ansonsten war die VSCode Integration tadellos... Zumindest für den kurzen Zeitraum, in dem ich damit gearbeitet habe.

Fazit

Ähnliches Fazit wie bei podman. Es fühlt sich nicht komplett an, es bleibt eine Bastlerlösung. Auch mit dieser Variante würde ich die bezahlte Version von Docker Desktop vorziehen. Windows Container sind mit dieser Variante weiterhin nicht möglich. Wie bei podman, fehlt bei dieser Lösung eine Kubernetes Umgebung, die muss separat installiert werden. Bei Docker Desktop für Windows hat man alles aus einer Hand + windows Container.