
Containerisierung
Containerisierung ist eine Technik, bei der ein Programm zusammen mit allem, was es zum Laufen braucht, in ein abgeschlossenes Paket gesteckt wird. Dieses Paket läuft auf jedem passenden Computer gleich – auf dem Laptop des Entwicklers ebenso wie auf einem Server im Rechenzentrum.
Ein Programm braucht meist mehr als sich selbst, um zu funktionieren. Es braucht bestimmte Hilfsprogramme, bestimmte Versionen davon und bestimmte Einstellungen. Fehlt eines davon auf einem anderen Computer, stürzt das Programm ab oder verhält sich seltsam. Containerisierung löst dieses Problem, indem man das Programm samt aller dieser Zutaten in ein abgeschlossenes Paket packt. Dieses Paket heißt Container, und es läuft überall dort gleich, wo die passende Software zum Abspielen installiert ist. Entwickler beschreiben das Prinzip gern mit dem Satz: einmal einpacken, überall ausführen.
Das Ende von „Bei mir läuft es doch“
In der Softwareentwicklung gibt es einen berühmten Satz: „Auf meinem Rechner funktioniert es.“ Gemeint ist der Moment, in dem ein Programm beim Entwickler tadellos läuft, auf dem Server aber nicht. Die Ursache sind fast immer Unterschiede in der Umgebung. Eine Bibliothek liegt in einer anderen Version vor, eine Einstellung fehlt, das Betriebssystem ist ein anderes. Container beseitigen diese Unterschiede, weil die Umgebung mit im Paket steckt.
Der zweite Grund ist Geschwindigkeit. Große Anbieter aktualisieren ihre Dienste oft mehrmals täglich. Das geht nur, wenn neue Versionen automatisch getestet und ausgerollt werden können. Container sind dafür die Standardverpackung: Man tauscht schlicht ein Paket gegen ein neueres aus. Geht dabei etwas schief, spielt man das alte Paket zurück.
Auch beim Geld macht das einen Unterschied. Auf einem einzelnen Server können dutzende Container nebeneinander laufen, ohne sich gegenseitig zu stören. Rechenzentren lasten ihre Maschinen dadurch deutlich besser aus. Das ist ein Grund, warum Cloud-Anbieter – also Firmen, die Rechenleistung stundenweise vermieten – fast vollständig auf diese Technik setzen.
Was in so einem Paket steckt
Am Anfang steht ein Bauplan, meist eine schlichte Textdatei. Darin steht, welches Grundsystem verwendet wird, welche Zusatzprogramme installiert werden und wie das Programm gestartet werden soll. Aus diesem Bauplan erzeugt ein Werkzeug ein sogenanntes Image, also eine unveränderliche Vorlage. Startet man das Image, entsteht daraus ein laufender Container. Aus einer Vorlage lassen sich beliebig viele identische Container starten.
Wichtig ist der Unterschied zur virtuellen Maschine, dem älteren Verfahren. Eine virtuelle Maschine ahmt einen kompletten Computer nach und bringt ein eigenes vollständiges Betriebssystem mit. Sie belegt daher schnell mehrere Gigabyte und braucht zum Starten oft eine Minute. Container teilen sich dagegen den Kern des Betriebssystems mit dem Wirtscomputer. Sie sind deshalb oft nur einige hundert Megabyte groß und in Sekundenbruchteilen einsatzbereit.
Ein verbreiteter Irrtum ist, Container seien vollständig voneinander abgeschottet. Sie sind getrennt, aber die Trennung ist dünner als bei einer virtuellen Maschine. Wer besonders hohe Sicherheitsanforderungen hat, kombiniert deshalb beides. Und weil in großen Systemen hunderte Container gleichzeitig laufen, braucht es einen Dirigenten: Software wie Kubernetes verteilt Container auf Server, startet abgestürzte neu und schaltet bei hoher Last zusätzliche zu.
Container hinter den Kulissen deiner Apps
Direkt sieht man Container fast nie, benutzt sie aber ständig. Wenn du ein Video streamst, eine Nachricht verschickst oder eine Online-Bestellung aufgibst, laufen im Hintergrund Server, deren Programme in Containern verpackt sind. Der Begriff, der dabei in Nachrichten am häufigsten fällt, ist Docker – das bekannteste Werkzeug zum Bauen und Starten von Containern.
In der KI-Welt sind Container besonders wichtig. Ein Sprachmodell braucht ganz bestimmte Rechenbibliotheken und Treiber für die Grafikkarten, auf denen es rechnet. Diese Kombination von Hand einzurichten, ist mühsam und fehleranfällig. Fertige Container nehmen einem das ab. Forscher können ihre Ergebnisse dadurch auch nachvollziehbar weitergeben, weil andere exakt dieselbe Umgebung starten.
Wirtschaftlich taucht das Thema regelmäßig in Quartalsberichten auf. Firmen wie Amazon, Microsoft und Google verdienen Milliarden damit, Container für ihre Kunden zu betreiben. Wenn in einer Meldung von „Cloud-native“ die Rede ist, ist damit fast immer eine Software gemeint, die von Anfang an aus Containern gebaut wurde. Ausprobieren lässt sich das übrigens auf jedem normalen Laptop – die Werkzeuge dafür sind kostenlos.