Server-Container: Virtualisierung der nächsten Generation
Virtualisierung hat die Informationstechnologie revolutioniert. Die Verteilung der Ressourcen eines physischen Rechners auf mehrere virtuelle Maschinen (VM) hat vor allem in Form der Hardware-Virtualisierung Einzug in die IT-Landschaft gehalten. Dieser Ansatz beruht auf der Emulation von Hardwarekomponenten, um auf einem gemeinsamen Hostsystem verschiedene virtuelle Server mit eigenem Betriebssystem (Operating System, OS) bereitstellen zu können. Zum Einsatz kommt ein solcher Aufbau oft in der Software-Entwicklung, wenn auf einem Computer verschiedene Testumgebungen realisiert werden sollen. Virtualisierung bildet zudem die Grundlage diverser Webhosting-Produkte, bei denen Serverleistung cloudbasiert zur Verfügung gestellt wird.
Eine Alternative zur Hardware-Virtualisierung stellt die Virtualisierung auf Betriebssystemebene dar. Dabei werden verschiedene Server-Anwendungen in isolierten virtuellen Umgebungen – sogenannten Containern – realisiert, die alle auf demselben Betriebssystem laufen. Man spricht daher auch von containerbasierter Virtualisierung. Genau wie virtuelle Maschinen mit jeweils eigenem Betriebssystem bieten auch Container die Möglichkeit, verschiedene Anwendungen mit unterschiedlichen Anforderungen parallel auf ein und demselben physischen System zu nutzen. Da Container kein eigenes OS beinhalten, zeichnet sich diese Virtualisierungstechnik durch eine deutlich schlankere Installation und einen geringen Overhead aus.
Server-Container sind keine neue Erfindung, ins Zentrum der Aufmerksamkeit rückt die Technologie derzeit jedoch durch Open-Source-Projekte wie Docker und rkt von CoreOS.
- Bestes Preis-Leistungs-Verhältnis – keine Virtualisierungskosten
- Migrationshilfe durch IONOS Cloud-Experten inklusive
- Ohne Vendor Lock-in & Open-Source-basiert
Was sind Server-Container?
Während sich die Hardware-Virtualisierung auf einen sogenannten Hypervisor stützt, der auf der Hardware des Hostsystems aufsetzt und diese anteilig an die Gast-Betriebssysteme verteilt, werden bei der containerbasierten Virtualisierung keine zusätzlichen Betriebssysteme gestartet. Stattdessen bildet das gemeinsame OS isolierte Instanzen seiner selbst. Diese virtuellen Container stellen Anwendungen eine komplette Laufzeitumgebung zur Verfügung.
Software-Container lassen sich im Grunde als Apps für den Server betrachten. Um eine Anwendung zu installieren, wird der entsprechende Container in einem portablen Format, dem sogenannten Image, mit allen benötigten Dateien auf den Rechner geladen und dort in einer virtuellen Umgebung gestartet. Eine Implementierung für Application-Container findet sich praktisch in allen Betriebssystemen: Auf Windows kommt die von Parallels entwickelte Software Virtuozzo zum Einsatz, FreeBSD stellt die Virtualisierungsumgebung Jails zur Verfügung und Linux unterstützt Container in Form von OpenVZ und LXC. Interessant für den Massenmarkt wird die Betriebssystemvirtualisierung jedoch erst durch Container-Plattformen wie Docker oder rkt. Sie fügen der Technologie grundlegende Funktionen hinzu, die den Umgang mit Server-Containern wesentlich vereinfachen.
Exkurs: Docker und das Comeback der Container-Technologie
Wer sich mit containerbasierter Virtualisierung beschäftigt, stößt unweigerlich auf Docker. Das Open-Source-Projekt ist dank eines hervorragenden Marketings binnen weniger Jahre zum Synonym für Container-Technologie geworden. Docker ist ein Kommandozeilen-Tool zum Starten, Stoppen und Verwalten von Containern und basiert auf Linux-Techniken wie Cgroups und Namespaces, um eine Ressourcentrennung einzelner Container zu realisieren. Anfangs kam dabei die LXC-Schnittstelle des Linux-Kernels zum Einsatz. Mittlerweise verwenden Docker-Container jedoch eine selbstentwickelte Programmierschnittstelle namens Libcontainer.
Ein zentrales Feature der Docker-Plattform ist das Docker Hub, ein Onlinedienst, der ein Repository für Docker-Images beinhaltet, sodass selbsterstellte Images bequem mit anderen Anwendern geteilt werden können. Für Linux-Nutzer gestaltet sich die Installation eines vorgefertigten Server-Containers so einfach wie der Download aus einem App-Store. Entsprechende Anwendungen werden über simple Kommandozeilenbefehle vom zentralen Docker-Hub heruntergeladen und auf dem eigenen System ausgeführt.
Konkurrenz bekommt Docker mit der Containerlösung rkt, die sowohl Docker-Images als auch das eigene Format App Container Images (ACI) unterstützt.
- Vollständige Datensouveränität in deutschen Rechenzentren
- Managed Service ohne Administrationsaufwand
- File-Sharing, Dokumentenbearbeitung & Kommunikation
Merkmale containerbasierter Virtualisierung
Application-Container stellen Administratoren sämtliche Dateien, die für den Betrieb einer Server-Anwendung benötigt werden, in einem handlichen Paket zur Verfügung. Dies vereinfacht z. B. die Installation und den Betrieb komplexer Serverprogramme. Die Vorteile liegen aber vor allem im Management und der Automatisierung containerbasierter Anwendungen.
- Geringer Installationsaufwand: Software-Container werden aus Images gestartet. Dabei handelt es sich um portable Abbildungen eines Containers, die ein einzelnes Serverprogramm und alle benötigten Komponenten wie Bibliotheken, Hilfsprogramme oder Konfigurationsdateien enthalten. Damit lassen sich die Unterschiede in diversen Betriebssystemdistributionen kompensieren. Der Installationsaufwand einer solchen Server-App beschränkt sich somit auf das Eintippen einer einzelnen Kommandozeile.
- Plattformunabhängigkeit: Images lassen sich komfortabel von einem System zum anderen übertragen und zeichnen sich durch eine weitgehende Plattformunabhängigkeit aus. Um einen Software-Container aus einem Image zu starten, benötigt man lediglich ein Betriebssystem mit entsprechender Container-Plattform.
- Minimaler Virtualisierungsschwund: Greift man auf Linux und Docker zurück, umfasst ein solcher Aufbau rund 100 Megabyte und ist in wenigen Minuten eingerichtet. Doch nicht nur die schlanke Installation kommt Systemadministratoren entgegen. Während bei einer Hardware-Virtualisierung deutliche Performance-Einbußen durch den Hypervisor und zusätzliche Betriebssysteme zu verzeichnen sind, reduzieren Container-Lösungen diesen sogenannten Virtualisierungsschwund auf ein Minimum. Zudem dauert das Booten virtueller Maschinen mitunter mehrere Minuten, Container-Apps für den Server hingegen stehen unmittelbar zur Verfügung.
- Isolierte Anwendungen: Jedes Programm in einem Server-Container läuft isoliert von anderen Software-Containern auf dem OS. So lassen sich selbst Anwendungen mit widersprüchlichen Anforderungen mit geringem Aufwand parallel auf demselben System betreiben.
- Einheitliche Administration und Automatisierung: Da das Management aller Server-Container auf einer Container-Plattform wie Docker mit denselben Werkzeugen erfolgt, lassen sich Anwendungen im Rechenzentrum weitgehend automatisieren. Container-Lösungen eignen sich daher vor allem für Server-Architekturen, bei denen einzelne Komponenten auf mehrere Server verteilt sind, sodass Lasten von verschiedenen Instanzen getragen werden. Die Container-Plattform Docker stellt für solche Anwendungsgebiete Tools zur Verfügung, mit denen sich Automatismen konfigurieren lassen. Dies ermöglicht es beispielsweise, neue Instanzen bei Lastspitzen automatisch zu starten. Eine auf Docker zugeschnittene Software zur Orchestrierung großer Container-Cluster bietet Google mit Kubernetes.
Die Vorteile der Container-Technologie werden in diesem Video zusammengefasst:
Wie sicher sind Container-Lösungen?
Der Verzicht auf separate Betriebssysteme verschafft der containerbasierten Virtualisierung einen Performance-Vorteil. Dieser geht jedoch mit einem reduzierten Sicherheitslevel einher. Während sich Sicherheitslücken im Betriebssystem bei der Hardware-Virtualisierung in der Regel nur auf eine virtuelle Maschine beziehen, wirken sich diese bei der Virtualisierung auf Betriebssystemebene auf alle Software-Container aus. Container sind demnach nicht im gleichen Ausmaß gekapselt wie virtuelle Maschinen mit eigenem OS. Zwar ließe sich durch einen Angriff auf den Hypervisor auch hier erheblicher Schaden anrichten. Dieser bietet durch die geringere Komplexität jedoch deutlich weniger Angriffsfläche als beispielsweise ein Linux-Kernel. Server-Container stellen somit zwar eine Alternative zur Hardware-Virtualisierung dar, werden diese jedoch vorerst nicht vollkommen ersetzen können.