doITbetter Blog - Das i-doit-Blog

Dokumentieren von Docker Containern mit i-doit

Geschrieben von Pattrick Bluhm | 02. August 2019

Docker-Container sind verhältnismäßig klein, vielseitig einsetzbar und für viele Applikationen maßgeschneidert. Sie schonen vorhandene Ressourcen und skalieren in rasantem Tempo die IT-Infrastruktur. Die Container, wie sie von Docker verwendet werden, sind eine besondere Form der Virtualisierung. i-doit beherrscht “out of the box” viele Arten von Virtualisierungen. Darum ist die Dokumentation von Docker-Images und -Containern mit i-doit kein Problem.

 

Was sind Docker Container?

 

Docker ermöglicht es, Anwendungen ohne Virtualisierungssoftware zu virtualisieren. Was zunächst konfus klingt, ist im Prinzip ganz einfach. Nahezu jede Anwendung ist von bestimmten Paketen abhängig, um lauffähig zu sein. Ob es PHP in einer bestimmten Version, eine Datenbank oder ein Webserver ist, hängt von der Anwendung ab. Mit Docker werden zusammen mit der Anwendung alle Grundvoraussetzungen (Abhängigkeiten) in einem sogenannten Container gepackt. Wenn dieser Container auf einen anderen Host übertragen und ausgeführt wird, ist eine Anpassung der vorhandenen Pakete nicht mehr nötig. Alles, was für die Ausführung der Anwendung notwendig ist, befindet sich im Container.

 

Welche Vorteile bieten Docker-Container?

 

Einsparung von Ressourcen

Da Docker-Container nicht im klassischen Sinn virtualisiert werden, kann auf die Nutzung eines zusätzlichen Betriebssystems verzichtet werden. Da das auf dem Host vorhandene Betriebssystem genutzt wird, werden beim Betrieb deutlich Ressourcen gespart. Trotz dieser gemeinsamen Nutzung sind die betriebenen Container untereinander und gegenüber dem Host abgeschottet. Durch die Zusammenfassung in Container-Images lassen sich diese zwischen verschiedenen Systemen austauschen und starten werden.

Schnelle und einfache Skalierung

Docker-Container sind zusätzlich gut skalierbar. Benötigen Sie eine zusätzliche Instanz einer Anwendung, starten Sie einen neuen Container. Wenn viele Container zu verwalten und zu organisieren sind, kommen Tools wie z. B. Kubernetes ins Spiel.

Modularisierung

Microservices sind eine Architektur in der IT, bei der komplexere Anwendungen aus kleinen, unabhängigen Bausteinen komponiert werden. Für diesen Einsatz eignen sich Docker-Container hervorragend. Eine Anwendung kann auf mehrere Container verteilt werden, anstatt auf einem einzigen virtuellen Server zu laufen.

Rollback und Versionierung

Ein weiterer Vorteil ist die Versionskontrolle. Durch den Aufbau der Docker-Container mit verschiedenen Layern werden Änderungen automatisch erfasst. Bei Bedarf kehren Sie einfach zu einer vorherigen Version (Rollback) zurück. Vor allem bei der agilen Entwicklung von Applikationen oder beim Implementieren neuer Funktionen sind Docker-Container somit effizient einsetzbar.

 

Gibt es Nachteile bei Docker Containern?

 

Durch den Verzicht auf ein eigenes Betriebssystem sind die Container enger mit dem Host verknüpft, als dies bei „echten“ virtuellen Maschinen der Fall ist. In der Regel teilen sich viele Container auf einem Server einen Betriebssystemkern: den des Host-Systems. Wird das Betriebssystem kompromittiert, trifft es auch viele Container gleichzeitig.

Ein weiterer Nachteil ist die hohe Komplexität der Containertechnologie. Während sich VMs leicht einrichten und überwachen lassen, ist dies bei Containern deutlich anspruchsvoller. Hinzu kommt, dass Tools wie Kubernetes ebenfalls recht komplex in der Einrichtung und Verwaltung sind.

 

Gibt es Docker nur für Linux?

 

Nein. Docker wurde zwar auf und für Linux entwickelt. Mittlerweile ist es aber auch unter Windows Server / Windows 10 und Mac OS verfügbar. Auch Cloud-Dienste wie Microsoft Azure, Amazon Web Services und Google Cloud bieten entsprechende Container-Technologien an. Somit können Cloud-Anwendungen sicher bereitgestellt und bei Bedarf problemlos skaliert werden.

 

Vorbereitung: Docker-Images in i-doit als eigenen Objekttyp anlegen

 

Um die Docker-Infrastruktur in i-doit zu dokumentieren, müssen wir ein paar Vorbereitungen treffen. Zuerst legen wir in der Objekttyp-Kategorie „Software“ den neuen Objekttyp „Docker-Image“ an.

 

 

Anlegen von benutzerdefinierten Kategorien

 

Für diesen erstellen wir über den Administrationsbereich zwei benutzerdefinierte Kategorien. Diese dienen dazu, die Funktion bzw. den Inhalt des Images zu beschreiben und den Link zu Registry aufzunehmen. Die erste Kategorie erhält ebenfalls die Bezeichnung “Docker-Image”. Diese wenden wir auf den Objekttyp “Docker-Image” an. Im Anschluss fügen wir ein Link-Feld mit der Feldbezeichnung “Registry” hinzu. Danach speichern wir unsere neue Kategorie.

 

 

Informationen zum Laden des Images hinzufügen

 

Ein Docker-Image Objekt besitzt nun in der gleichnamigen Kategorie zwei Felder: Einen Link zur Registry und die obligatorische Beschreibung, die i-doit automatisch hinzufügt. Im Beschreibungsfeld tragen wir nun das Pull-Kommando ein, über welches das Image hinzugefügt wird. Durch das Hinzufügen dieser beiden Felder haben wir dokumentiert, in welcher Registry sich das Image befindet. Ferner haben wir erfasst, was auf Kommandozeilenebene eingegeben werden muss, um dieses zu laden.

 

Eine zweite benutzerdefinierte Kategorie

 

Als zweite benutzerdefinierte Kategorie erstellen wir „Container“. Diese Dokumentationskategorie gibt uns einen Überblick, welche Instanzen des Images existieren. Wir verwenden dazu die Funktion des variablen Report, der alle dokumentieren Instanzen des Images zeigt. Auch diese Kategorie fügen wir wieder dem Objekttyp „Docker-Image“ hinzu.

 

 

Anlegen eines eigenen Berichts

 

Da wir alle aktiven Docker-Images angezeigt bekommen möchten, ist es sinnvoll einen eigenen Bericht dafür zu erstellen und direkt im Objekt anzuzeigen. Daher erstellen wir einen neuen Report über Report Manager und legen als Bedingung “Objekttyp = Docker-Image” fest.

 

 

Die Beziehung zwischen Image und Container herstellen

 

Um nun auch die Container zu dokumentieren, erstellen wir einen neuen Objekttyp „Container“ in der Objekttyp-Gruppe „Infrastruktur“. Wir wählen hier alle Eigenschaften aus, die zu dokumentieren sind. Üblicherweise soll die gleiche Dokumentationsqualität wie bei „Virtuelle Server“ erreicht werden. Daher übernehmen wir die Eigenschaften aus dieser Kategorie.

Um einen Bezug zwischen Image und Container herzustellen, erstellen wir eine benutzerdefinierte Kategorie mit dem Namen „Docker“. Zur eindeutigen Identifizierung bietet sich ein Textfeld mit „Name (Hash)“ an, ein Objekt-Beziehungsfeld, mit dem wir später unser „verwendetes Image“ auswählen. Wichtig bei dieser Konfiguration ist es, dass wir als Objekttyp „Container“ festlegen.

 

 

Die fertige Kategorie

 

Die erstellte Kategorie ist nun in Objekten vom Typ „Container“ erstellt. Hier wird der Name des Containers und sein Hash, sowie das Run Kommando und eine Referenz auf das zugrundeliegende Image hinterlegt.

 

 

Das Virtualisierungssystem hinzufügen

 

Zur Vervollständigung der Virtualisierungstechniken erweitern wir noch die Eigenschaften der „Virtuellen Maschinen“ um das Virtualisierungssystem „Docker“.

 

 

Dockerfile dokumentieren

 

Erweitern sie später Ihre Dokumentation, in dem Sie das Dockerfile unter Dateien ablegen. So haben Sie alle Informationen über Ihre Docker-Virtualisierung an einem Ort.

 

Docker-Container und -Images mit i-doit im Griff

 

Docker Images und Container lassen sich schnell und vollständig mit i-doit dokumentieren. Unser besonderer Dank geht an Christian Wally von unserem i-doit Partner don’t panic für diesen Artikel. Besuchen Sie dont-panic.at für weitere innovative Lösungen und smarte ITSM-Erweiterungen.