Docker

Alle Welt redet von Lösungen als "Docker Container" und Windows Server kann per Hyper-V nicht nur VMs hosten sondern auch Docker-Container. Diese Seite enthält Links und meine Erfahrungen mit Docker

Docker, was ist das noch mal ?

Um eine Software oder einen Service zu betreiben gibt es verschiedene Optionen. Man kann:

  1. Native auf Hardware
    Das gilt z.B. für Programme auf Arduino, ESP8266 und andere Geräte, bei denen es gar kein eigenes "Betriebssystem" gibt sondern direkt der Code nach der Kompilierung ausgeführt wird.
  2. Native auf Basis das darunterliegenden Betriebssystems
    In der Windows-Welt sind das quasi alle Programme, die sie auf Windows installieren und dann ausführen. Eine Virtualisierung gibt es hier auch nicht wirklich, wenn man mal AppV etc. außen vor lässt. Die verschiedenen Programme können sich abver gegenseitig stören
  3. Virtuelle Hardware mit VMWare, Hyper-V, Xen-Server
    Diese Technik ist schon lange bekannt. Sie betreiben auf einem Host in virtuellen Maschinen weitere komplette Betriebssysteme zzgl. der Anwendungen. Der Vorteil ist, dass die Systeme gut gegeneinander abgeschottet sind und weniger physikalische Hardware eingesetzt wird. Auf der anderen Seite müssen Sie viel mehr Server verwalten, Updaten, Pflegen und die Virtualisierung kostet auch etwas Overhead und sorgt für Abhängigkeiten. Um eine Lösung zu starten, muss erst der komplette Gast gestartet werden. Ein Image ist meist mehrere Gigabyte groß und ein Verlagern zwischen Hyper-V, VMWare und Xen ist auch nicht immer möglich.
  4. Docker virtualisiert Schnittstellen
    Das Programm selbst ist in einem Container eingeschlossen aber nutzt direkt die Schnittstellen des Betriebssystems (Also Linux). Aber im Container drin ist kein eigener Kernel o.ä. Die Software glaubt sie habe den Host ganz für sich alleine. Die Docker-Software sorgt dafür dass mehrere Container nebeneinander laufen aber doch nichts von einander sehen. Sie sind schon gegeneinander abgeschottet und können maximal über TCP/IP miteinander kommunizieren. Sie sind deutlich kleiner als richtige VMs, portabel zwischen den unterschiedlichen Plattformen, auf denen Docker läuft und starten sehr schnell.

Se gibt also eine allgemeine Schnittstellenvorgabe von Docker, die erst mal auf Linux aufbaut und so ist klar dass die meisten Docker Container natürlich Linux-Programmer enthalten. Die Lösung hat Charme da der Overhead der Virtualisierung aufgrund des fehlenden Hostbetriebssystems deutlich kleiner ist. Wenn eine aus Containern basierende Lösung auch genau Daten und Konfiguration vom ausführbaren Programm trennt, werden Updates einfach durch den Tausch des kompletten Containers möglich. Auch ist es dann einfach immer mehr Container zu starten, wenn getrennte Instanzen, geografische Verteilung und Skalierung erforderlich werden. Mit Kubernetes und Swarm bereichern zwei anderen Projekte die Docker-Plattform um eine Management und eine Verteilung erweitert haben.

Docker kann man sogar auf einer Workstation nutzen aber das ist aktuell wohl eher eine Nische. Zumindest solange z.B. die bekannten Windows Programme noch nicht als Container zur Verfügung stehen. Ebenso wenig sollten Sie in nächster Zukunft erwarten, dass z.B. Programme wie Exchange Server o.ä., als Docker Container erscheinen werden. Ich fände es aber schon interessant, wenn man z.B. PowerShell-Lösungen z.B. als Container bereitstellen kann. PowerShell. Core ist ja schon auf Linux lauffähig und PowerShell 6 ist mittlerweile OpenSource.

Docker auf Windows

Unter Linux ist Docker recht einfach durch die verschiedenen Package Manager installiert. Aber auch ein Windows Betriebssystem kann Docker ausführen und darauf die entsprechenden Container starten. Technisch stellt Docker hier auf Basis von Hyper-V eine VM mit dem Kernel bereit, in der dann die Docker-Container laufen. Voraussetzung ist aber ein Hyper-V-Unterbau, in dem dann Docker quasi ein rudimentäres Linux al sVM aktiviert, welches dann die Basis für die weiteren Container darstellt.

Docker und Synology

Docker als Basis ist nicht auf "PCs" und "Server" beschränkt. Mittlerweile können Sie entsprechende Container auch auf NAS-Geräten laufen lasen. Ab dem Moment wird die Plattform auch für den Heimbereich interessant, insbesondere wenn es sich um NAS-Geräte handelt, bei denen der Hersteller die Docker-Unterstützung mit bringt. Der Container ist dann schnell und einfach installiert ohne dass Sie am eigentlichen NAS-Betriebssystem etwas verändern müssen.

Interessante Docker Container

Einfach nur mal Docker installieren, bringt noch keinen Vorteil. Interessant wird Docker durch die Nutzung der verschiedenen bereitgestellten Docker-Container, in denen quasi "fertige Software" schon betriebsbereit enthalten ist,. Durch den Betrieb im Container entfällt die Installation auf einem Host mit vielen Abhängigkeiten, Ich finde folgende Container interessant:

Es kommen sicher noch einige Container dazu, denn man muss ja nicht erst den Host installieren und dann den Gast und da drin dann die Applikation.

Weitere Links