Application Containerization (App Containerization)
Als Application Containerization bezeichnet man eine Virtualisierungsmethode auf Ebene des Betriebssystems für das Deployment und den Betrieb verteilter Anwendungen, ohne für jede einzelne Anwendung eine komplette virtuelle Maschine (VM) zu benötigen. Stattdessen laufen mehrere isolierte Systeme auf einem einzigen steuernden Host und greifen auf denselben Kernel zu.
Die Application Container auf Basis der Container-Virtualisierung beinhalten Komponenten wie Dateien, Umgebungsvariable und notwendige Bibliotheken für den Betrieb der gewünschten Software. Da auf diese Weise Ressourcen geteilt werden, belasten Application Container die insgesamt verfügbaren Ressourcen im Vergleich zu virtuellen Maschinen deutlich weniger. Wird zum Beispiel eine Variation eines standardisierten Image benötigt, so kann ein Container angelegt werden, der nicht mehr als die zusätzliche Bibliothek enthält.
Befürworter der Technologie bewerben sie mit den Hauptvorteilen der Effizienz bezüglich Speicher, CPU und Storage gegenüber der herkömmlichen Server-Virtualisierung. Da Container nicht den Overhead von VMs mit sich bringen, können auf derselben Infrastruktur sehr viel mehr Container als VMs betrieben werden. Zu den Vorteilen gehört auch die Portabilität über verschiedene Cloud-Umgebungen hinweg. Solange die Servereinstellungen über Systemgrenzen hinweg identisch sind, kann ein Application Container ohne Änderungen am Code auf jedem System ausgeführt werden. Es gibt keine Gast-Umgebungsvariablen oder Bibliotheksabhängigkeiten, die wie bei virtuellen Maschinen verwaltet werden müssten.
Ein Nachteil der Containernutzung ist die fehlende Isolierung vom grundlegenden Betriebssystem. Weil Container nicht vom Host-Betriebssystem auf einer virtuellen Maschine abstrahiert sind, haben sicherheitsrelevante Angriffe einfacheren Zugang zum System.
Die Nutzung von Containern gewann mit dem Open-Source-Tool Docker deutlich an Aufmerksamkeit. Docker-Container eignen sich für so ziemlich jede Umgebung, vom lokalen Computer bis zu virtuellen Maschinen, von Bare-Metal-Servern bis zu OpenStack-Clustern oder auch Public-Cloud-Instanzen. Bevor Anwendungen containerisiert werden, sollte allerdings zunächst evaluiert werden, ob sich die jeweiligen Workloads überhaupt für die Container-Virtualisierung eignen.