Der Einsatz von Container Virtualisierung (Docker) in Azure Cloud

Liebe Leserinnen, liebe Leser,

willkommen zum ersten Techi-Monday Blogeintrag der tegos Group. Der Techi-Monday Blog wird jeden ersten Montag im Monat mit einem interessanten Thema besetzt und deckt viele Felder des technologischen Bereiches sowie des Cloud Computing ab.

Der erste Beitrag handelt von Containern in der Anwendungs-Virtualisierung – einer Alternative zur virtuellen Maschine. Aber wie genau funktionieren Container? Wir erklären euch, was Container sind, wie sie funktionieren und wie sie produktiv in der Azure Cloud eingesetzt werden können, um möglichst kosteneffizient Anwendungen in der Cloud zu deployen.

Was ist Docker bzw. ein Container

Docker ist eine Open-Source-Software mit der sich Anwendungen ähnlich wie bei einer Betriebssystem-Virtualisierung in Containern isolieren lassen. Eine typische virtuelle Maschine, die ein vollständiges Betriebssystem mit sich bringt, produziert einen großen Overhead. Dieser lässt sich durch die Verwendung von Docker-Containern vermeiden. Container starten deshalb um einiges schneller und nutzen deutlich weniger Ressourcen als herkömmliche virtuelle Maschinen.

Eine Anwendung in Docker enthält ihre Konfiguration und dessen Abhängigkeiten, jedoch kein eigenes Betriebssystem oder Kernel. Das hat den Vorteil, dass Docker keine Hardware emulieren und keine zusätzliche Betriebssysteminstanz einbinden muss. Aus diesem Grund fallen Container deutlich schlanker aus als herkömmliche virtuelle Maschinen, da sie auf das Starten eines eigenen Betriebssystems verzichten und stattdessen über den Host laufen.

VM vs Container

Ein bedeutender Vorteil der Docker-Container ist die gute Skalierbarkeit von Containern. Werden zusätzliche Instanzen einer Anwendung benötigt, dann können einfach neue Container über simple Befehle gestartet werden. Nach dem Stoppen sind sie wieder vollständig aus dem System verschwunden. Die Verwaltung einer größeren Anzahl von Containern erleichtern Werkzeuge für die Container-Orchestrierung, zum Beispiel Google Kubernetes.

Eine Fallstudie: Container in der Cloud

Da wir nun wissen, was ein Container ist und wie dieser funktioniert, kommen wir zu der Frage, wie man die Technologie am effizientesten in der Cloud einsetzt.

Im folgenden gibt es einen Anwendungsfall für ein Open-Source Asset Management System „Snipe-IT“.

Snipe-IT verwaltet den Hardwarebestand und listet auf, welcher Mitarbeiter welches Notebook, Monitor oder Bildschirm in seinem Inventar hat. Um diese Web-Anwendung zum Laufen zu bekommen, wird zum einen die Webanwendung benötigt, die über PHP ausgeliefert wird sowie eine MySQL Datenbank, in der die Daten gespeichert werden. Normalerweise würde man nun eine virtuelle Maschine in der Azure Cloud erstellen und die Anforderungen (PHP, PHP Erweiterungen, GD Library) installieren und garantieren.

An dieser Stelle kommt Docker ins Spiel. Mit Hilfe eines Docker Images können wir die Anwendung über ein Image laden, das immer auf dem aktuellen Stand ist. Zudem erstellen wir noch einen MySQL Container, der die Datenbank wiederspiegelt, ebenfalls mit einem Image aus dem Dockerhub.

Um einen Snipe-IT Container zu starten, benötigt es nur einen Befehl und Snipe-IT läuft in Version 4.1.13. Natürlich müssen die Container noch miteinander verlinkt werden, sodass auch die MySQL Datenbank von Snipe-IT genutzt werden kann.

Nun stehen wir an der entscheidenden Stelle. Die virtuelle Maschine (der Host) hat nun zwei Container, die isoliert – jedoch verlinkt miteinander – arbeiten und die Web-App voll funktionsfähig bereitstellen. Neben diesen Containern können weiter Container hinzugefügt werden, ohne eine weitere virtuelle Maschine erstellen zu müssen. Das spart Zeit, Kosten und Ressourcen. Natürlich sollten Sie auch sicherstellen, dass der Host-Rechner über ausreichende Ressourcen verfügt, sodass kein Engpass entstehen kann. Die Verwendung eines gut ausgestatteten Hosts in Microsoft Azure, auf dem Docker läuft, ist wesentlich effizienter und kostengünstiger als herkömmliche Installationen auf mehreren virtuellen Maschinen.

Probieren Sie es einfach aus und richten Sie sich eine einfache Hello-World Anwendung als Container ein.