
Container
Ein Container ist ein Paket, das ein Programm zusammen mit allen Hilfsdateien enthält, die es zum Laufen braucht. Dadurch verhält sich die Software auf jedem Computer gleich, egal ob auf dem Laptop des Entwicklers oder auf einem Server im Rechenzentrum.
Ein Programm läuft selten allein. Es braucht bestimmte Hilfsdateien, bestimmte Einstellungen und oft eine ganz bestimmte Version davon. Fehlt eines dieser Teile, startet das Programm nicht oder verhält sich falsch. Ein Container ist ein Paket, das das Programm und all diese Zutaten zusammen einpackt. Man kopiert dieses Paket auf einen anderen Computer, und dort läuft alles genauso wie vorher. Der Name stammt vom Schiffscontainer: Innen kann Beliebiges stecken, außen ist die Form immer gleich, und deshalb kann jeder Kran damit umgehen.
Das Ende von « Bei mir lief es doch »
Vor der Containertechnik war ein Satz in Softwarefirmen berüchtigt: « Auf meinem Rechner funktioniert es. » Ein Entwickler schrieb ein Programm, es lief bei ihm einwandfrei, und auf dem Server stürzte es ab. Die Ursache war meist banal. Der Server hatte eine ältere Version einer Hilfsdatei oder eine andere Einstellung. Solche Fehler zu finden kostete oft Tage.
Container lösen dieses Problem an der Wurzel. Weil die Umgebung mit ins Paket wandert, gibt es keinen Unterschied mehr zwischen Entwicklerrechner und Server. Das macht Software deutlich schneller auslieferbar. Große Anbieter bringen heute mehrmals täglich neue Versionen ihrer Dienste heraus, ohne dass Nutzer etwas davon merken.
Für KI kommt ein zweiter Punkt dazu. KI-Modelle hängen von sehr genauen Versionen ihrer Rechenbibliotheken ab, also der Software, die die Berechnungen auf den Grafikkarten ausführt. Schon eine leicht andere Version kann zu anderen Ergebnissen oder zu Abstürzen führen. Wer ein Modell in einem Container ausliefert, legt diese Versionen fest. Forschungsergebnisse werden dadurch nachvollziehbar wiederholbar.
Abgrenzung zur virtuellen Maschine
Jeder Computer hat ein Betriebssystem, also die Grundsoftware, die Programme und Hardware verwaltet. Bei Windows oder Linux ist genau das gemeint. Die ältere Lösung für dasselbe Problem war die virtuelle Maschine: ein kompletter simulierter Computer samt eigenem Betriebssystem im echten Computer. Das funktioniert, ist aber schwerfällig. Eine virtuelle Maschine belegt schnell mehrere Gigabyte und braucht zum Starten eine Minute.
Ein Container geht sparsamer vor. Er bringt kein eigenes Betriebssystem mit, sondern nutzt das des Wirtsrechners mit. Eingepackt werden nur das Programm und seine direkten Hilfsdateien. Deshalb ist ein Container oft nur wenige hundert Megabyte groß und startet in Sekundenbruchteilen. Auf einem einzigen Server laufen so problemlos hunderte Container nebeneinander.
Damit sie sich nicht gegenseitig stören, schirmt das Betriebssystem sie voneinander ab. Jeder Container sieht nur seine eigenen Dateien und Prozesse. Diese Trennung ist allerdings schwächer als bei einer virtuellen Maschine. Wer besonders empfindliche Daten verarbeitet, kombiniert deshalb manchmal beides.
Docker, Kubernetes und die Cloud
Das bekannteste Werkzeug zum Bauen von Containern heißt Docker. Es hat die Technik ab 2013 populär gemacht, und viele Leute sagen « Docker » auch dann, wenn sie allgemein Container meinen. Ein Entwickler beschreibt in einer kurzen Textdatei, was ins Paket gehört. Docker baut daraus ein fertiges Abbild, das sich kopieren und starten lässt.
Sobald hunderte Container im Spiel sind, braucht es eine Verwaltung. Diese Aufgabe übernimmt meist Kubernetes. Das Programm verteilt Container auf verfügbare Server, startet abgestürzte neu und fährt bei viel Andrang zusätzliche Kopien hoch. Wenn in Meldungen von skalierbarer Cloud-Infrastruktur die Rede ist, steckt fast immer diese Kombination dahinter.
Im Alltag begegnet dir das indirekt, aber ständig. Streamingdienste, Onlineshops und Chatbots laufen praktisch alle in Containern. Auch wer selbst ein KI-Modell auf dem eigenen Rechner ausprobieren will, lädt es häufig als Container herunter. Das erspart das mühsame Installieren einzelner Abhängigkeiten und macht aus einem Nachmittag Fehlersuche einen einzigen Befehl.