Software als Stückgut: Wie Docker das Rechenzentrum revolutioniert.

Ab in den Container

Autor: Thomas Ulken, Lead Software Architect, Fact Informationssysteme & Consulting GmbH

Blickt man hinter die Kulissen, erinnern moderne Cloud-Lösungen technisch betrachtet ein wenig an die IT-Modelle der Sechziger- und Siebziger-Jahre, als einfache textbasierte Terminals per Datenfernübertragung mit Großrechnern in Rechenzentren verbunden waren. Nur dass heute wesentlich schnellere Netzwerkverbindungen, ausgefeiltere Benutzeroberflächen und tausend Mal mehr Rechenleistung schon in einfachsten Servern zur Verfügung stehen.

Dennoch geht es für die Anbieter von Cloud-Lösungen weiterhin darum, in ihren Rechenzentren eine möglichst große Zahl von Nutzern gleichzeitig und dabei auch gleichmäßig zu bedienen. Nur so können durch Cloud-Computing Kosten- und Effizienzvorteile erzielt werden.

Lastspitzen sollen dynamisch abgefangen und ausgeglichen werden, damit Nutzer nicht wie in vergangenen Zeiten schon einmal Sekunden warten müssen, bis Anwendungen auf ihre Eingaben und Abfragen reagieren. Cloud-Dienste sollen so reaktiv sein, als würden sie auf dem lokalen Endgerät des Nutzers ausgeführt. Das ist ein ganz entscheidender Faktor für den Erfolg der Cloud-Technologie.

Eine zentrale Rolle spielt dabei das Thema Virtualisierung und die Ausführung von Cloud-Anwendungen in Containern.

Mit Virtualisierung fing alles an

Um mehrere Nutzer auf einem Server zu bedienen, setzte man in den Anfangstagen des Cloud-Computings auf sogenannte „Virtuelle Maschinen“. Virtualisierungsprodukte wie KVM, Xen oder VMware simulieren gegenüber dem Betriebssystem und der jeweiligen Applikation die Existenz mehrerer vollständiger PCs auf einem Server ‑ jeder davon mit eigenständiger CPU, Speicher, Festplatte, BIOS etc.

Dies stellt ein hohes Maß an Kompatibilität und Abgrenzung der verschiedenen Nutzer und ihrer Applikationen sicher. Gleichzeitig bringt es einen bedeutenden Mehraufwand mit sich, der sich mit einer wachsenden Anzahl virtueller Maschinen pro Server zunehmend bemerkbar macht.

Schließlich muss in jeder zusätzlichen virtuellen Maschine beim Start derselbe Softwarestack hochgefahren werden, wie auf dedizierten Servern: Betriebssystem, Datenbank, Bibliotheken und Konfigurationsdateien sind in jeder VM einzeln zu installieren und bei Bedarf zu aktualisieren. Das führt zu einem hohen Ressourcen-Verbrauch und langsamen Startzeiten. Die Leistung sinkt.

Software als Massenstückgut

Aus dem Wunsch nach effizienteren Lösungen entwickelte sich die Container-Technik mit der Open-Source-Lösung Docker als ihrem prominentesten Vertreter. Dabei werden nicht mehr komplette virtuelle PCs simuliert, sondern lediglich die Laufzeitumgebungen der verschiedenen Anwendungen auf einer Maschine geschickt voneinander abgeschottet. Jede Anwendung wird dazu in einen oder mehrere Software-Container verpackt, die als eigenständige Prozesse auf einer gemeinsamen Betriebssystem-Instanz laufen. Diese Container können jederzeit individuell gestartet und beendet werden.

Nicht zufällig wurde der Begriff „Software-Container“ der realen Welt entliehen, wo Standard-Seecontainer seit 1960 den Warentransport revolutioniert haben. Container befördern heute Güter aller Art: Schüttgut, Paletten, Pakete, Säcke oder Fahrzeuge. Das erforderte bis dahin neben viel Handarbeit auch eine vielfältige Verlade- und Transportinfrastruktur. Zwar gibt es weiterhin Spezialanfertigungen wie etwa Kühlcontainer, Tankcontainer oder Wohncontainer - für Logistiker macht dies aufgrund der Standardisierung hinsichtlich Größe, Transport-Schnittstelle und Dokumentation aber kaum einen Unterschied.

Genauso ist es nun auch in der IT-Welt: Software-Unternehmen liefern ihre Produkte in Form standardisierter Software-Container an, Cloud-Anbieter schieben sie auf gerade freie Server in ihren Rechenzentren und führen sie dort aus.

Mehr Effizienz durch Container

Durch Container reduziert sich der Ressourcenbedarf einer Anwendung im Vergleich zu vollständigen Virtuellen Maschinen spürbar. Außerdem fallen die Container-Images deutlich kleiner aus, weil darin nur noch die Anwendung und nicht mehr der Betriebssystem-Kern enthalten sein muss.

Als Folge starten Container wesentlich zügiger und benötigen für ihre Ausführung weniger Speicher. Außerdem müssen sie nicht regelmäßig mit Updates für Betriebssystem, Datenbanken, Bibliotheken etc. versorgt werden. Auch Änderungen an der Software gestalten sich mit Containern viel einfacher, weil sie nicht mehr innerhalb der Produktivumgebung stattfinden müssen.

Stattdessen werden Änderungen beim Software-Lieferanten in einem neuen Image (einer Docker-Datei) getestet. Anschließend wird einfach das betreffende Image auf dem Server ausgetauscht. Damit ist die Aktualisierung abgeschlossen.

Vor allem lassen sich Container im laufenden Betrieb zwischen verschiedenen Servern hin- und herschieben, ohne dass die Ausführung spürbar unterbrochen wird oder Daten verloren gehen. So wird sichergestellt, dass jeder Container zu jedem Zeitpunkt die erforderliche Menge an CPU-Leistung erhält.

Standard-Lösung Docker

Docker hat diese Mechanismen auf breiter Basis populär gemacht. Doch Docker ist viel mehr als nur ein Anwendungs-Virtualisierer. Mit Docker hat sich auch ein Format für das Verpacken von Anwendungen etabliert, was deren Distribution deutlich vereinfacht. Denn in diesen Containern stecken nicht nur die Anwendungen selbst, sondern auch die zusätzlichen Bibliotheken und Pakete, die für die Ausführung einer Applikation individuell benötigt werden.

 

 

Applikationsbetrieb in Docker-Containern Abbildung: Applikationsbetrieb in Docker-Containern

 

 

Außerdem schuf Docker einen Standard, wie Container untereinander mittels etablierter Techniken wie TCP/IP kommunizieren können. Und zwar innerhalb eines Servers und über Rechnergrenzen hinweg.

Dadurch können die Aufgaben einer Software-Lösung auf viele unabhängige Container verteilt werden. In einem Container steckt beispielswese die Applikations-Logik, in einem anderen der benötigte Datenbank-Server, im nächsten ein Internet-Gateway usw. Wo der jeweilige Container gerade ausgeführt wird, ist nebensächlich.

Prinzipiell ist Docker auf die Anwendungsvirtualisierung mit Linux ausgerichtet. Docker kann allerdings auch mittels Hyper-V bzw. VirtualBox unter Windows und mit HyperKit bzw. VirtualBox unter macOS verwendet werden. Aus dem modernen Cloud-Computing ist Docker deshalb nicht mehr wegzudenken.

Lesen Sie auch:

  • Herausforderungen an das Asset-Management – „Nichts ist so beständig wie der Wandel“, sagt man.

    Mehr
  • DORA: Herausforderungen, rechtliche Absicherung, Umsetzung – Stichtag 17.01.2025

    Mehr
  • Schnelle Resultate mit dem Fin RP Best-Practice-Toolkit – Warum bei null beginnen? Besser: eine schnelle Implementierung mit dem Best-Practice-Toolkit

    Mehr
  • Nicht jeder Anzug sitzt – Cloud-Computing ist nicht gleich Cloud-Computing. Es kommt auf das passende Betriebsmodell an.

    Mehr
  • Das Auge isst mit – Information, Interaktion, Intuition: Mit Cloud-Technik zu modernen Benutzerschnittstellen.

    Mehr
  • Der Geist einer neuen Zeit – Viel mehr als ein Modewort: Was sich hinter Cloud-Computing verbirgt.

    Mehr