Dr. Holger Schwichtenberg Entwicklungsleiter der 5Minds IT-Solutions GmbH & Co. KG

„Docker Hub und Azure Container Registry sind Repositories von Docker-Containern, in denen man öffentliche oder private Images veröffentlichen kann. Jeder kann auch eine eigene Docker Registry betreiben.“

Die leichtgewichtige Virtualisierung mit Docker-Containern hat inzwischen auch Einzug in das Windows-Betriebssystem gehalten. Dabei gibt es direkt mehrere Optionen, wie man Windows- oder Linux-basierte Container hosten kann. Dieser Artikel stellt vor, welche Möglichkeiten es gibt und wie man nutzt.

Docker gibt es seit dem Jahr 2013. Im Jahr 2014 wurde es erstmals in eine Linux-Distribution (Red Hat Enterprise Linux) integriert. Am 15.10.2014 gab Microsoft zunächst die Integration in Windows Server 2016 bekannt, am 8.6.2016 folgte die Ankündigung für Windows 10. Docker ist erfolgreich, weil es eine leichtgewichtige Virtualisierung auf Betriebssystemebene bietet. Ein Hypervisor ist (eigentlich) nicht notwendig; dies gilt aber nicht für Windows 10, wo man Hyper-V in jedem Fall auch für Docker-Container aktivieren muss (dazu gleich noch mehr). Aber auch dann kann man einen Docker-Container deutlich schneller starten und entfernen als eine virtuelle Maschine (VM). Ein Container verbraucht zudem weniger RAM und Festplattenplatz als eine VM.

Grundbegriffe in Docker

Ein Image ist eine Vorlage für einen Container, vergleichbar mit einer Klasse in der objektorientierten Programmierung. Ein Image enthält ein Betriebssystem – oft mit einer oder mehreren darin installierten Server- und Konsolenanwendungen (GUIs sind in Docker nicht möglich). Das Image enthält alle notwendigen Dateien dafür. Typischerweise ist ein Image in Schichten aufgebaut.

Abbildung 1 zeigt das Image, das Microsoft mit einem Linux-basierten SQL Server bereitstellt. Die Grafik ist allerdings vereinfacht, tatsächlich gibt es mehr Schichten. Jede Schicht enthält gegenüber der vorhergehenden weitere oder geänderte Dateien. Schichten können viele GB oder auch nur wenige Bytes groß sein. Das Image ist read-only. Instanzen des Image sind die Container. In den Instanzen können Dateien ergänzt oder geändert werden. Es kann von einem Image beliebig viele Container geben. In Abbildung 1 sieht man drei Containerinstanzen des SQL Server Image.

Abb. 1: Ein Docker-Image besteht aus Schichten

Ein neues Docker Image erstellt man durch einen bestehenden Container oder ein Dockerfile. Abbildung 2 zeigt das Anlegen eines Image auf Basis eines der drei Container aus Abbildung 1: Der Inhalt des Containers wird zu einer neuen Schicht im neuen Image. Das Image meinefirma/mein-tolles-sqlserver-image besteht aus dem von Microsoft bereitgestellten Basis-Image microsoft/msql-server-linux und einer zusätzlichen Schicht mit 223 MB. Image-Namen dürfen keine Großbuchstaben enthalten.

Alternativ kann man zur Erstellung eines Containers ein textbasiertes Dockerfile verwenden (Listing 1). Dies bezieht sich bei FROM auf ein lokal oder in einem Repository existierendes Basis-Image und beschreibt die Änderungen, die für das neue Image vollzogen werden sollen (Listing 1). Mit dem Sub-Befehl build im Kommandozeilenwerkzeug docker.exe übersetzt man ein Dockerfile zu einem Image unter Angabe des Ordners mit dem Dockerfile, das einfach dockerfile ohne Dateinamenserweiterung heißen muss:

docker build t:\OrdnerMitDokerFile --tag meinwebserverimage  

Docker.exe ist Teil der umfangreichen Docker-Kommandozeilenwerkzeuge. Nur für einen sehr kleinen Teil der Docker-Administration gibt es eine grafische Benutzeroberfläche.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Windows Developer 9.18 - "Docker für .NET-Entwickler"

Alle Infos zum Heft
579851365Linux- und Windows-basierte Docker-Container unter Windows
X
- Gib Deinen Standort ein -
- or -