Ein Blick auf die Preview-Version von Docker für Windows

Docker für Windows – das kann die Betaversion
Kommentare

Der Installations- und Konfigurationsprozess für Docker unter Windows ist alles andere als optimal. Das fand auch Docker und hat aus diesem Grund begonnen, „Docker for Mac and Windows“ zu entwickeln. Dieser Artikel nimmt die Betaversion von Docker for Windows unter die Lupe und fasst die Ergebnisse zusammen.

Will man als Entwickler Docker-Container auf seiner Windows-Entwicklungsmaschine verwenden, stellt Docker dafür schon seit Längerem die Docker Toolbox zur Verfügung. Mit ihr wird allerdings automatisch Oracles VirtualBox für den Betrieb des Docker-Hosts in einer Linux-VM installiert.

Unter Windows ist das ungewöhnlich und von vielen auch unerwünscht, da das Betriebssystem mit Hyper-V einen eingebauten Hypervisor anbietet. Docker Machine, die Komponente der Docker Toolbox, die sich um die Verwaltung der Docker-Hosts kümmert, unterstützt zwar schon länger Hyper-V, die Installation von VirtualBox lässt sich aber dennoch nicht verhindern. Man kann die Software aber in einem zweiten Schritt wieder deinstallieren, falls man nur Hyper-V nutzen will.

Ein Glück, dass Docker ein Helferlein für den Installations- und Konfigurationsprozess anbietet: Docker for Windows. Hier meine Analyse des Tools im Detail.

Docker for Windows vs. Windows Containers

Docker for Windows darf man nicht mit den von Microsoft angekündigten Windows-Containers verwechseln. Docker for Windows ist ein Produkt der Firma Docker. Es ermöglicht den einfachen Betrieb von Linux-basierenden Docker-Containern auf Windows-10-Entwicklungsmaschinen. Windows-basierende Container können damit Stand heute nicht betrieben werden.

Windows-Container kommen von Microsoft, nicht von Docker. Sie ermöglichen den Betrieb von Windows-basierenden Containern unter Windows. Ausprobieren kann man Windows-Container mit der aktuellen Preview-Version von Windows Server 2016. Diese steht auch als fertige Virtual Machine (VM) in Azure zur Verfügung.

Installation von Docker for Windows

Docker for Windows setzt voraus, dass Hyper-V installiert ist und läuft. Falls Sie bisher Docker Toolbox mit VirtualBox verwendet haben, beachten Sie, dass sich VirtualBox und Hyper-V auf einer Maschine ausschließen. Die aktuelle Beta-Version von Docker for Windows unterstützt nur 64-Bit- Windows-10. Sind die Systemvoraussetzungen erfüllt, ist die Installation ein Kinderspiel. Microsoft Installer (MSI) starten, ein paar Mal auf „Weiter“ klicken und schon ist alles erledigt. Nach dem Start von Docker unter Windows wird man in der Taskbar vom bekannten Docker-Wal begrüßt (Abb. 1).

Abb. 1: Docker in der Taskleiste

Abb. 1: Docker in der Taskleiste

Docker sucht selbstständig nach Updates. Steht ein Update zur Verfügung (passiert in der aktuellen Betaphase relativ häufig), wird man automatisch darauf hingewiesen und kann den Download und die Installation mit einem Klick erledigen.#

Hyper-V-Konfiguration

Docker verwaltet die virtuelle Maschine in Hyper-V, in der der Docker-Host läuft, automatisch. Sie trägt den Namen MobyLinuxVM. Man muss nichts manuell herunterladen oder konfigurieren. Auch das von Docker Machine bekannte docker-machine create-Kommando entfällt.

Darüber hinaus wird in Hyper-V ein eigenes, internes Netzwerk namens DockerNAT angelegt, dem die Docker-VM automatisch hinzugefügt wird. Selbst für Entwickler, die kaum Ahnung von Linux-Administration haben, ist das Set-up von Docker for Windows problemlos möglich.

Erste Tests

Nach der Installation startet man eine Kommandozeile oder PowerShell und probiert die ersten, einfachen Docker-Kommandos aus:

  • docker version zeigt die Versionsnummern von Client und Server an.
  • docker run hell-world lädt das erste Image aus dem Docker Hub. Wenn das klappt, weiß man, dass die Netzwerkkonfiguration in Ordnung ist.
  • Mit docker run -it ubuntu holt man sich das Ubuntu-Image und startet seinen ersten, interaktiven Ubuntu-Container.

Wer mit Docker Machine vertraut ist, wird merken, dass kein Setzen von Umgebungsvariablen (docker-machine env) mehr notwendig ist.

Volume Mounting in Docker for Windows

Neben der stark vereinfachten Installation ist die attraktivste Funktion, die Docker for Windows für uns Entwickler bringt, das Volume Mounting eines Verzeichnisses der Windows-Entwicklungsmaschine in einen Docker-Container.

Abbildung 2 zeigt, wie es funktioniert. Hier wird das lokale Verzeichnis c:\temp\docker-for-windows im Pfad /greet in einen Ubuntu-Container gemountet. Falls Sie dieses Beispiel nachvollziehen möchten, hier ein wichtiger Tipp: Damit das Volume Mounting funktioniert, müssen Sie in den Docker-for-Windows-Einstellungen das betroffene Laufwerk (in meinem Beispiel das Laufwerk C) freigeben. Dazu klicken Sie rechts auf den Docker-Wal in der Taskbar, wählen Settings… und klicken auf Manage Shared Drives… Ohne diesen Schritt können Sie zwar das Verzeichnis mounten, es ist jedoch immer leer.

Abb. 2: Volume Mounting eines Windows-Verzeichnisses

Abb. 2: Volume Mounting eines Windows-Verzeichnisses

Praxisbeispiel: Build-Prozess

Die Unterstützung des Volume Mounting unter Windows eröffnet eine Fülle an Möglichkeiten. Man kann beispielsweise den Quellcode (z. B. Node.js, .NET Core, Single Page Web App) unter Windows speichern und mit Visual Studio editieren, den Build-Prozess aber in einem Docker Container laufen lassen. Lassen Sie uns diesen Anwendungsfall am Beispiel des Übersetzens eines TypeScript-Programms durchspielen (siehe auch Abb. 3):

  • Als Erstes erstellen wir ein Dockerfile, das auf dem offiziellen Image für Node.js basiert und den TypeScript-Compiler global installiert. Listing 1 zeigt die wenigen, dafür notwendigen Codezeilen. Achten Sie darauf, dass im Dockerfile davon ausgegangen wird, dass der zu kompilierende TypeScript-Code im Verzeichnis /src liegt.
  • Als Nächstes bauen wir ein Docker-Image aus dem Dockerfile. Das geschieht mit dem Kommando docker build -t tsc . (tsc ist der Name, den das Docker-Image erhalten soll).

Jetzt können wir den TypeScript-Build-Prozess mit dem Kommando docker run –rm -v c:\temp\docker-for-windows:/src tsc in einem Docker-Container laufen lassen. Der Container existiert nur für die Dauer des Build-Prozesses. Durch die Option –rm wird er danach sofort gelöscht. Mit der Option -v mounten wir das lokale Verzeichnis mit dem Quellcode in das Containerverzeichnis /src.

Listing 1
FROM node:latest
RUN mkdir /src & npm install -g typescript
WORKDIR /src
ENTRYPOINT ["tsc"]
Abb. 3: TypeScript-Build-Prozess in einem Docker-Container

Abb. 3: TypeScript-Build-Prozess in einem Docker-Container

Fazit

Docker for Windows ist eine große Erleichterung für Entwicklerinnen und Entwickler, die auf ihrer Windows-10-Entwicklungsmaschine Docker-Container verwenden möchten. Obwohl die Software erst in einer Private-Preview vorliegt, läuft sie meiner Erfahrung nach schon recht stabil.

Besonders erfreulich ist, dass Volume Mounting jetzt auch unter Windows funktioniert. Dadurch können zum Beispiel Build-Prozesse oder Testumgebungen ganz einfach in Container ausgelagert werden, ohne den Code hineinkopieren zu müssen. Entwickler, die Software wie ich primär unter Windows 10 schreiben, können dadurch die Power von Docker im Entwicklungsprozess endlich gut nutzen.

Wer sich von Docker for Windows Windows-Container erwartet, wird allerdings enttäuscht. Der Docker-Host läuft weiterhin unter Linux. Wer schon jetzt Windows statt Linux im Container möchte, muss dafür auf die Preview von Windows Server 2016 zurückgreifen.

Windows Developer

Windows DeveloperDieser Artikel ist im Windows Developer erschienen. Windows Developer informiert umfassend und herstellerneutral über neue Trends und Möglichkeiten der Software- und Systementwicklung rund um Microsoft-Technologien.

Natürlich können Sie den Windows Developer über den entwickler.kiosk auch digital im Browser oder auf Ihren Android- und iOS-Devices lesen. In unserem Shop ist der Windows Developer ferner im Abonnement oder als Einzelheft erhältlich.

Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -