Was ist Containering?
Containering und containerbasierte Virtualisierung waren in den letzten Jahren der „letzte Schrei“ in der Software-Entwicklung. Dabei handelt es sich um einen Ansatz der Virtualisierung, bei dem die gesamte Virtualisierungsebene als eine Anwendung innerhalb des Betriebssystems realisiert wird. Im Gegensatz zu der klassischen Virtualisierung wird hier auf den Einsatz eines sogenannten „Hypervisors“ verzichtet. Die containerisierten Anwendungen haben einen direkten Zugriff auf den Kernel des Host-Betriebssystems und kommen aufgrund ihrer hohen Flexibilität und Portabilität in erster Linie in modernen Cloud-Umgebungen zum Einsatz.
Containering im Detail
Seitdem die offene Software Docker im Jahr 2013 der breiten Öffentlichkeit vorgestellt wurde, zieht sie das Interesse von Entwicklern und IT-Architekten auf sich. Das innovative Projekt versprach damals die IT-Landschaft genauso zu revolutionieren, wie es die Virtualisierung einige Jahre zuvor gemacht hat. In den vergangenen Jahren hat sich die Containering-Technologie flächendeckend durchsetzen können. Dennoch bleiben jedoch viel Fragen unbeantwortet: Stellen sie die bessere Alternative zu den traditionellen Virtualisierungstechniken dar oder sind sie nur eine weitere Möglichkeit, um Anwendungen in der Cloud zu virtualisieren und bereitzustellen? Dass sich sowohl IBM, als auch Red Hat und Microsoft an der Weiterentwicklung von Docker aktiv beteiligen, lässt allerdings vermuten, dass es sich hierbei um eine zukunftssichere Technologie handelt.
Was ist also Containering und wo kommt es zum Einsatz? Containering ist in erster Linie dafür vorgesehen, um Software ohne größere Anpassungen auf unterschiedlichen Plattformen verlässlich laufen zu lassen. So kommt es beispielsweise immer wieder vor, dass Entwickler den geschriebenen Code von dem eigenen Computer in die Testumgebung schicken müssen. Von dort wird er nach erfolgreichen Tests in die Produktion verlagert.
Da der Code im Rahmen eines Containers verschickt wird, wird keine umfangreiche Konfiguration und Verwaltung seitens des Empfängers benötigt. Obwohl sich all dies praktisch anhört, gibt es auch einige Nachteile. Falls die Entwicklungs- und Betriebssystemumgebungen nicht identisch sein sollten, kann es zu Problemen kommen. Nutzt der Entwickler beispielsweise Python 3.0, die Produktion jedoch die Version 2.7, kann bei der Ausführung des Codes vieles schiefgehen. Zu ähnlichen Problemen kommt es, wenn beispielsweise zum Programmieren Red Hat Linux und in der Produktion Suse Linux zum Einsatz kommt.
Welche Vorteile bietet Containering?
Bei der traditionellen Virtualisierung setzt sich ein Software-Paket aus einer virtuellen Maschine (VM), einem Betriebssystem und Applikation zusammen. Ein dedizierter Server mit vier virtuellen Maschinen würde über einen Hypervisor vier separate Betriebssysteme bereitstellen müssen. Im Vergleich dazu muss auf einem Server mit vier containerisierten Anwendungen nur ein Betriebssystem bereitgestellt werde, das sich alle vier Container teilen.
Konkret bedeutet das, dass Container deutlich weniger Ressourcen verbrauchen als traditionelle virtuelle Maschinen. Aus diesem Grund lässt sich auf einem einzelnen Server eine größere Anzahl an Containern ausführen als auf einer virtuellen Maschine. Ein weiterer wesentlicher Vorteil von Containern ist, dass sie in der Lage sind, sehr schnell zu booten. Während virtuelle Server in vielen Fällen einige Minuten benötigen, um hochzufahren, stehen containerisierten Anwendungen fast sofort zur Verfügung.
Angesichts dieser enormen Vorteile, kommt selbstverständlich die Frage auf, warum Containering die traditionellen Virtualisierungstechniken nicht bereits komplett abgelöst hat. Der Hauptgrund hierfür ist die Sicherheit, da Container keine so hohe Sicherheit bieten wie traditionelle VMs. Eine potenzielle Sicherheitslücke im Betriebssystem kann Auswirkungen auf alle anderen Container haben, die auf demselben OS laufen. Container bieten nicht dasselbe Niveau an Isolation, wie man es von traditionellen Virtualisierungstechniken gewohnt ist.
Vielmehr eine Ergänzung als ein vollständiger Ersatz
Containering sollte man vielmehr als Ergänzung zu den traditionellen VMs betrachten als einen vollständigen Ersatz. So können beispielsweise Container in leichtgewichtigen virtuellen Maschinen ausgeführt werden, wodurch eine weitere Isolationsschicht eingeführt wird und so die Sicherheit maßgeblich erhöht wird. Darüber hinaus muss weiterhin alle Hardware (Server, Netzwerke, Storage) mittels Virtualisierung verwaltet werden, sodass Containering daran nichts ändert. Container lassen sich also gar nicht als ein vollwertiger Ersatz für VMs nutzen, denn sie bauen auf der Virtualisierung auf.
Darüber hinaus gibt es mittlerweile eine Vielzahl von Linux-Distributionen, die sich auf Containering spezialisiert haben. Hierzu gehören neben CoreOS und Snappy Ubuntu auch Red Hats Project Atomic sowie Photon von VMware. Auch Microsoft investiert viel in Containerisierungstechnologien, sodass Docker auf Windows-Server-Plattformen und im Rahmen der Azure-Cloud genutzt werden kann.
Docker und weitere containerbasierte Technologien
Docker ist das bekannteste Tool aus dem Segment der Containerisierungstechnologien, welches die Erstellung und den Betrieb von Containern ermöglicht. Beim Containering handelt es sich jedoch nicht um eine neue Technologie. Im Rahmen verschiedener Linux-Distributionen werden Container in Form von LXC bereits seit fast zwei Jahrzehnten genutzt. Darüber hinaus bieten Oracle, Sun sowie Solaris und FreeBSD ähnliche Tools für die Erstellung und den Betrieb von Containern.
Docker hat im Laufe der Jahre einige prominente Konkurrenz bekommen. Eine sehr gute Alternative ist das Command-Line-Tool „rkt“ von CoreOS. Der wesentliche Vorteil dieses Tools ist, dass es sowohl mit eigenen als auch mit Docker-Containern problemlos umgehen kann. Rkt wendet sich jedoch grundsätzlich an kleinere Unternehmen, während Docker in erster Linie für den Einsatz in großen Cloud-Umgebungen ausgerichtet ist.
- Über den Autor
- Aktuelle Beiträge
Daniel Faust ist Redakteur im Content-Team der Biteno und betreut den Blog der Biteno GmbH.