Was sind eigentlich Container und Docker?

Was sind eigentlich Container und Docker?

Schematischer Aufbau mit Microservice, Container und Docker
Ausgehend von der Development Community schwappen die Begriffe Mircoservices, Container und Docker durch die IT- Welt. Wir versuchen uns hier an einem verständlichen, abstrahiertem Überblick für das IT Management. Lesezeit 5 Minuten


Wenn wir von diesen drei Begriffen sprechen, geht es in erster Linie um Softwareentwicklung. Die zentrale Motivation hinter diesen drei Begriffen ist, die Softwareentwicklung effizienter und flexibler zu machen.

Microservices

Aber starten wir von der untersten Ebene: Wenn man eine gesamte Applikation als Summe kleinerer Codepäckchen sieht, die eine definierte Subfunktion haben, spricht man von einem Mircoservice. Eine moderne Anwendung ist weniger ein gigantischer Codeblock, als vielmehr ein Dirigent seiner Microservices.

Stellen Sie sich vor, dass die Entwicklungseinheiten einer Autofabrik nicht auf die Entwicklung eines kompletten Autos konzentrieren, sondern Module wie Gangschaltung und Bremsen designen.

Diese Module können in neuen Modellen wieder verwendet werden. Das spart Zeit und Entwicklungsaufwendungen.

Container

Solche Microservices können dann, alleine oder zu mehreren in einen Container gepackt werden. Dieser garantiert die Ausführbarkeit des Services in allen Umgebungen, da er ein in sich geschlossenes IT-Ökosystem bildet.

Betrachten wir einmal die folgende Metapher: Das malerische Hafenhotel “am Dock 12” hat mehrere Hotelzimmer, stellt aber nur ein Badezimmer und eine Küche zur Verfügung. Die Gäste aber sind bunt zusammengemischt vom internationalen, piekfeinen Banker bis zum rauen Matrosen. Da gibt es nicht nur verschiedene Ansprüche, es besteht auch wenig Interesse, sich das gleiche Bad zu teilen.

Kommen wir auf unsere Microservices zurück. Auch diese brauchen ihr eigenes Badezimmer und eine eigene Küche und teilen nur ungerne. Alle Services benötigen verschiedene Libraries und ein bestimmtes Framework, z. B. eine bestimmte Ruby on Rails Version, um einwandfrei zu laufen.

Als Lösung dieses Problems verwenden wir nun Container, also bekommt jeder Service die Libraries und Frameworks individuell geliefert. Oder: Jeder Gast bekommt Bad und Küche ganz nach seinen Wünschen.

Docker

Je modularer die Mircoservices, desto unübersichtlicher wird es und damit schwerer für den Entwickler, die Services im Einklang mit dem großen Ganzen auszurichten. Hier kommt das Managementtool Docker ins Spiel. Mit Docker können Anwendungsentwickler schnell ihre Containerflotte ordnen und ausführen.

Als abschließende Metapher können Sie hier an den Terminalkran denken, der vom Hotel “am Dock 12” aus gut sichtbar montiert ist. Der Aufseher lässt die verschiedenen Schiffcontainer, die er benötigt, auf das wartende Frachtschiff aufladen.

Auf der obersten Ebene steht dann die Anwendung, die sich dieser Container und darin gepackten Services bedient.

Technik-Ecke

Die technische Seite

Nun aber genug der Vergleiche. Wie funktioniert das tatsächliche Deployment von Container mit Docker? Dafür gibt es drei zentrale Bestandteile: Den Docker Host, den Docker Client und die Docker Registry.

Der Docker Host ist die Laufzeit-Umgebung, innerhalb derer die Container ausgeführt werden. Erstellen, ausführen und terminieren kann der Nutzer Container mit Hilfe des Clients. Zusätzlich erlaubt es der Client ein Netzwerk für Container zu definieren und persistenten Storage einzurichten. Denn der Speicher eines Containers ist vergänglich und wird mit Beendigung des Containers freigegeben. Um langfristig Daten zu speichern, muss daher auf dauerhafte Volumen zurückgegriffen werden.

Mit Hilfe der letzten Komponente, der Docker Registry, können Sie  nun eine Bibliothek für Images angelegen. Von dieser können mit Hilfe des Clients Images in einer Containerumgebung gestartet werden oder aber umgekehrt ein Snapshot eines bestehenden Containers langfristig gespeichert werden, um ihn bei Bedarf wiederzuverwenden.

Container und VMs

Eine häufig gestellte Frage ist die nach dem Unterschied zwischen Container und VMs. Denn beide scheinen auf der gleichen Idee zu basieren: Die Software ungeachtet der Hardware zu abstrahieren und somit auf der gleichen Physik mehreren Anwendern Koexistenz zu ermöglichen.

Doch es gibt einen eklatanten Unterschied: Während sämtliche VMs, die auf demselben Hypervisor laufen, mit einem eigenen OS ausgestattet sind, teilen sich die Container ein Betriebssystem. Lediglich die Libraries und Frameworks unterscheiden sich. Daraus ergeben sich zwei Vorteilen: Erstens ist das Bereitstellen von Containern schneller als das von VMs und zweitens – und darin liegt überhaupt erst eine Existenzrechtfertigung – sind Container platzsparender. Denn obgleich es nicht effizient wäre ein vollständiges Betriebssystem bereitzustellen, um eine einzige Anwendung laufen zu lassen, wird ein Container diesen Anforderungen gerecht.

Abschließende Gedanken

Fassen wir also nochmal zusammen: Die Mircoservices erfüllen Subaufgaben der Anwendung und können in Containern verpackt so umgebungsunabhängig laufen. Docker wiederum managet und orchestriert die Container. Über dem Ganzen steht die eigentliche Anwendung.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.