Docker, Windows, WSL - ein starkes Team

post-thumb

Docker Desktop für Windows ist nicht mehr kostenlos. Anwender sind unsicher, was zu tun ist und welche Alternativen jetzt bestehen. Wer im Developer-Workflow nur einen Teil der Funktionen benötigt, für den zeige ich hier eine interessante Alternative.

Die Chancen stehen heute nicht schlecht, auf den Rechner von Menschen aus dem IT-Sektor auf Docker zu treffen. Die 2013 vorgestellte Software ist seit Jahren eine der am meisten verwendeten Container-Umgebungen. Im November 2019 kaufte der OpenStack-Spezialist Mirantis das Docker-Enterprise-Geschäft und gut zwei Jahre später wurde bekanntgegeben, dass das Produkt Docker Desktop nicht länger kostenlos sein wird: Wer mehr als 250 Mitarbeitende beschäftigt oder mehr als 10 Mio. USD Umsatz pro Jahr macht, muss für die Verwendung von Docker Desktop-Lizenzen erwerben. Seit dem 31. Januar 2022 ist die Frist zum Übergang abgelaufen.

Docker Desktop, (c) Docker

Der eine oder andere dachte, bei Docker Desktop handele es sich nur um das User Interface unter Windows, das ist aber nicht korrekt: Docker Desktop ist eine Sammlung von Bestandteilen wie der Docker Engine, Docker Compose, integriertem Kubernetes, Ressourcenmonitoring, automatischen Updates und mehr. Wer Verwendung für diese und weitere Features hat, ist mit dem Vollprodukt sicher nicht schlecht beraten.

Allerdings benötigen viele Entwickler gar nicht alle Funktionen. Wer nur Container laufen lassen oder Images bauen möchte, kommt mit einem wesentlich kleineren Funktionsumfang aus. Zu den am häufigsten per Container benutzten Technologien gehören Produkte wie NGINX, Redis und Postgres, oder auch Elasticsearch oder Mysql. Nicht jeder benötigt Kubernetes auf seinem lokalen Gerät.

Developer, Meet Linux

Ich sags mal rund heraus: Wer Software für Server oder Container schreibt, kommt um Linux nicht herum. Auch wenn Java und Javascript (auch) unter Windows laufen, so ist das “natürliche Habitat” doch Linux: Images gängiger Produkte wie die gerade erwähnten basieren auf Debian oder Ubuntu Linux, oder Alpine Linux. Nicht Windows. Wer solche Images erweitern möchte, muss Syntax und Konzepte von Bestandteilen wie der Bash Shell, Linux Filesystems oder aus dem *NIX Umfeld bekannte Tools verwenden.

Zu Zeiten eines Steve Ballmer tat man bei Microsoft noch so, als sei Linux die Pest und Menschen wie Linus Torvalds der Antichrist. Das ist lange vorbei. Heute bietet Microsoft mit dem Windows Subsystem for Linux (WSL) eine beständig besser werdende Linux-Integration seit Windows 10 an. Im Microsoft Store finden sich betriebsfertige Downloads für Distributionen wie Ubuntu, OpenSUSE, Kali, Debian, Arch Linux und weitere. You’ve come a long way, Microsoft.

Zusammen mit dem ebenfalls kostenlosen Visual Studio Code (VScode) eröffnet das dem Entwickler eine spannende Alternative zu Docker Desktop.

Visual Studio Code, WSL2 und Docker/containerd

Das Geheimnis ist die Fähigkeit von VScode, sich mit entfernten Maschinen zu verbinden: VS Code Remote Development funktioniert mit SSH und anderen Transporten, besonders einfach aber mit WSL.

vscode remote development architecture, (c) Microsoft

In dem wir die IDE unter Windows installieren, deren Prozesse aber unter Linux laufen, erhalten wir das Beste aus beiden Welten. Unter Linux kann man auf Shells wie Bash oder ZSH zugreifen, Tools wie wget oder rsync verwenden und Utilities wie sed und awk nutzen. Und wir können Docker unter Linux installieren, und dieses komfortabel via Windows/VScode verwenden.

Installation

  1. In einer Administrator-Powershell führen wir den Befehl wsl --install aus. Dieser Befehl aktiviert die für die Ausführung von WSL erforderlichen Features und installiert die Ubuntu-Distribution von Linux.
  2. Beim ersten Start vergeben wir einen Benutzernamen und ein Passwort unter Linux. Dieses muss nicht dem Windows-Passwort entsprechen.
  3. Wir folgen der Dokumentation zur Installation von Docker unter Linux.
  4. Der in Schritt 2 angelegt User wird Docker-Nutzer mit dem Kommando sudo usermod -aG docker $USER
  5. Zuletzt starten wir den Docker-Service in Linux beim Start von WSL automatisch: WSL boot-Setting
    [boot]
    command = service docker start
    

Nach dieser Prozedur steht ein vollständiger Docker-daemon unter Linux zur Verfügung. Diesen verwenden wir mit VScode so:

  1. Wir installieren VScode unter Windows, sowie das Remote Development extension pack
  2. Drücken Sie F1 und wählen Sie Remote-WSL: New Window aus.
  3. VScode sollte jetzt (einmalig) benötigte Komponenten nachladen und die Prozesse auf der WSL-Seite starten. Das passiert alles automatisch.

Und Docker?

VScode bietet ein großes Angebot von Erweiterungen, sehr viele davon sind kostenlos nutzbar. Dazu zählt auch Docker for Visual Studio Code. Diese unter MIT-Lizenz stehende Erweiterung bietet uns direkt aus VScode die Möglichkeit

  • Dockerfiles mit Syntaxunterstützung zu erzeugen und zu bearbeiten
  • Details des lokalen Docker Daemon zu steuern, darunter geladene Images, Netzwerke und Volumes
  • sich zu Registries zu verbinden
  • Docker Compose zu benutzen
  • Services in einem laufenden Container zu debuggen
  • das Azure CLI zu verwenden

Und als Bonus können wir unter Linux Tools wie das hervorragende lazydocker verwenden, eine einfach zu nutzende, textbasierte UI für Docker.

lazydocker demo

Happy dockering!

Weiterführende Informationen

Der Objektkultur-Newsletter

Mit unserem Newsletter informieren wir Sie stets über die neuesten Blogbeiträge,
Webcasts und weiteren spannende Themen rund um die Digitalisierung.

Newsletter abonnieren