Die zentralen Eigenschaften von Containern lassen sich in wenigen Sätzen zusammenfassen: Sie liefern Programmcode und notwendige Abhängigkeiten in einem isolierten Paket und laufen in einer einzelnen Instanz des Host-Betriebssystems. Und zwar entweder direkt auf der physikalischen Hardware oder in einer virtuellen Maschine und egal, ob im unternehmenseigenen Rechenzentrum oder in einer Public Cloud. Container unterscheiden sich eindeutig von der Hypervisor-Virtualisierung, denn diese verknüpft die virtuellen Maschinen mit einem kompletten Betriebssystem und dieses Konstrukt verursacht einen beachtlichen Overhead. Um diesen Schwachpunkt zu beseitigen, enthält ein Applikations-Container bereits alle benötigten Abhängigkeiten wie die Middleware und Laufzeitumgebung. Dadurch können sich auf einem Server mehrere Container den Betriebssystem-Kernel teilen.
Container versprechen eine agile und kostengünstige Entwicklung, denn sie lassen sich schnell und komfortabel zwischen und innerhalb von Entwicklungs-, Test- und Betriebsumgebungen portieren. Damit sind Unternehmen in der Lage, viele organisatorische Probleme der klassischen Software-Entwicklung in großen Projekten zu lösen. Es müssen nicht mehr Dutzende von Programmierern an einer einzigen Applikation arbeiten. Stattdessen gibt es kleine Teams, die sich auf bestimmte Teilaufgaben und Prozesse konzentrieren und damit deutlich agiler arbeiten können.
Bei der Übergabe von Containern in den produktiven Betrieb ist es im einfachsten Fall möglich, mit dem Serverprozess "systemd" den Ablauf zu initiieren. In aktuellen Linux-Distributionen fungiert der systemd-Prozess als init-system zum Starten, Überwachen sowie Beenden weiterer Prozesse und er lässt sich darüber hinaus auch für eine rudimentäre Verwaltung von Container-Images einsetzen. Für kleine, überschaubare Applikationen mag systemd ausreichend sein, umfangreiche Unternehmens-Applikationen stellen anspruchsvolle
...Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.