Docker Desktop - Potentielle Alternativen (Windows)

Sofern die restriktionen Zutreffen - 10 Mio. $ Umsatz oder Mitarbeiterzahel größer/gleich 255 - muss es lizenziert/abonniert werden. In "Docker Desktop - Potentielle Alternativen" gehe ich auf genau diese Thematik ein. In diesem Artikel werde ich alternative Lösung für meine Ansprüche vorstellen.

Docker Desktop - Potentielle Alternativen (Windows)
Docker desktop alternatives

Letztes Jahr hat Docker die Lizenzbestimmungen für Docker Desktop (zu Zeit der Entstehung von diesem Artikel ist besagtes Produkt nur für Windows und MacOSX verfügbar) geändert. Sofern die restriktionen Zutreffen - 10 Mio. $ Umsatz oder Mitarbeiterzahel größer/gleich 255 - muss es lizenziert/abonniert werden. In "Docker Desktop - Potentielle Alternativen" gehe ich auf genau diese Thematik ein. In diesem Artikel werde ich alternative Lösung für meine Ansprüche vorstellen.

Docker Desktop for Windows

Eins vorweg, eine Umstellung auf eine Kostenlose oder Kostengünstigere Variante ist auch mit Kosten verbunden. Die hier vorgestellten Alternativen haben meisten nur die Community als Support Option. Auch sollte bei so einer Erwähgung die Größe des Teams/Mitarbeiter betrachtet werden.

  • Kann ich das meinem Team zumuten?
  • Wieviel Zeit wird für eine Umstellung benötigt?
  • Wie ist die Akzeptanz von den Alternativen?

Was definitiv nicht geht - zumindest zu Zeiten wo dieser Artikel geschrieben wurde - sind Windows container. Sofern - warum auch immer - der Bedarf an Windows Containern bestehen, gibt es aktuell keine Alternative für Docker Desktop in Windows.

Das Problem kann aber mit lokaler Entwicklung auf Windows und Build in Azure DevOps in manchen Situation umgangen werden.

Was sind meine Anforderungen?

Ich habe keine exotischen Anforderungen für eine Entwicklungs-Umgebung.  Ich könnte direkt mit einer Linux Distribution arbeiten und würde glücklich werden. Das geht leider nicht, da ich für Kommunikation, Schriftwechsell, Colloboration etc. auf einen Windows Client angewiesen bin. Privat habe ich dafür eine Rechner mit Ubuntu, da verwende ich ausschließlich VSCode als Umgebung.

Auf meinem Firmen Rechner entwickle ich unter Windows. Als Entwicklungswerkzeuge verwende ich Visual Studio und Visual Studio Code. Mit letzterem Arbeite ich gerne mit Remote Containern. Daher habe ich folgende Anforderungen:

  • [Wichtig] Build/Push von Images auf Host System Ebene
  • [Wichtig] Integration in VSCode - Remote Container
  • [Wichtig] Lokaler Kubnernetes Cluster
  • [Nicht so wichtig] Schnelle und Unkomplizierte in Betriebnahme/Installation
  • [Nicht so wichtig] Container in Container

Tatsächlich konnte ich die wichtigsten Themen mit allen Varianten abdecken, die Container in Container Thematik, ist anscheinend auch mit allen Varianten möglich. Ich habe es aber bei 2 von 3 nicht ootb hinbekommen, bin aber auch nicht tiefer in die Thematik eingegangen.

Die Alternativen

Das sind 3 am Stück und alle 3 setzen WSL2 (Windows Subsyytem for Linux V2) voraus. Die von mir ausprobierten Alternativen sind folgende:

  • Podman + minikube (V3.4.x, V4 wurde während dieses Artikels released)
  • WSL2 mit Docker-CE + minikube (und Docker Compose)
  • Rancher Desktop

Kubernetes

Die ersten beiden brauchen für eine lokale Kubernetes Umgebung ein weiteres Tool, hierfür kann MiniKube empfohlen werden. Rancher Desktop bringt das gleich mit, und benötigt daher keine weiteren Tools.

Windows Subsystem for Linux V2

Für Podman und die Docker Compose Variante wird eine WSL2 Umgebung benötigt, die kann entweder direkt vom Micorosft Store - z.B. Ubuntu 20.04 - installiert werden oder über den WSL Manager installiert werden. Letzteres ist ein nettes Tool mit UI, vergisst nicht zu spenden :)

Bevor einer der beiden Varianten in einem WSL Container in Betrieb genommen werden kann, muss gewährleistet werden, dass die WSL Container tatsächlich in der Version 2 laufen. Das kann sehr leicht mit folgendem Befehl in PowerShell herausgefunden werden.

wsl -l -v
output wsl -l -v

Die im Beispiel oben aufgelisteten WSL haben bereits die Version 2. Sollte an dieser Stelle die gewünschte WSL Installation als Version 1 aufgelistet werden, so kann mit folgendem Befehl die Version hochgestuft werden.

Angenommen der Name der WSL Instanz ist DockerHost

wsl --set-version DockerHost 2

Rancher Desktop bringt sein eigenen WSL2 Instenzen mit, diese werden während der Installation erstellt.

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