Docker Desktop - Potentielle Alternativen (Windows)
Sofern die Restriktionen zutreffen – 10 Mio. $ Umsatz oder Mitarbeiterzahl größer/gleich 255 – muss es lizenziert/abonniert werden. In diesem Artikel stelle ich alternative Lösungen für meine Ansprüche vor.
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 meistens nur die Community als Support-Option. Auch sollte bei so einer Erwägung die Größe des Teams/Mitarbeiter betrachtet werden:
- Kann ich das meinem Team zumuten?
- Wie viel Zeit wird für eine Umstellung benötigt?
- Wie ist die Akzeptanz von den Alternativen?
Was definitiv nicht geht – zumindest zum Zeitpunkt der Entstehung dieses Artikels – sind Windows Container. Sofern der Bedarf an Windows Containern besteht, gibt es aktuell keine Alternative für Docker Desktop unter Windows.
Das Problem kann jedoch mit lokaler Entwicklung auf Windows und Build in Azure DevOps in manchen Situationen umgangen werden.
Was sind meine Anforderungen?
Ich habe keine exotischen Anforderungen für eine Entwicklungsumgebung. Ich könnte direkt mit einer Linux-Distribution arbeiten und wäre glücklich damit. Das geht leider nicht, da ich für Kommunikation, Schriftwechsel, Kollaboration etc. auf einen Windows-Client angewiesen bin. Privat habe ich dafür einen Rechner mit Ubuntu, dort verwende ich ausschließlich VSCode als Umgebung.
Auf meinem Firmenrechner 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 Kubernetes-Cluster
- [Nicht so wichtig] Schnelle und unkomplizierte Inbetriebnahme/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 drei an der Zahl und alle drei setzen WSL2 (Windows Subsystem 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. Diese kann entweder direkt vom Microsoft Store – z.B. Ubuntu 20.04 – installiert werden oder über den WSL Manager installiert werden. Letzteres ist ein nettes Tool mit UI, vergiss nicht zu spenden :)
Bevor eine 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
Die im Beispiel 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 seine eigenen WSL2-Instanzen mit, diese werden während der Installation erstellt.
Artikel dieser Serie:
- Part 1: Overview – Docker Desktop - Potentielle Alternativen (Windows) (du liest ihn gerade)
- 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: Rancher Desktop - Potentielle Alternative für Docker Desktop für Windows