
Docker
Docker ist ein Programm, das eine Software zusammen mit allem, was sie zum Laufen braucht, in ein abgeschlossenes Paket packt. Dieses Paket läuft 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 meist zusätzliche Hilfsprogramme, bestimmte Einstellungen und oft eine ganz bestimmte Version davon. Fehlt eines dieser Teile auf einem anderen Computer, stürzt das Programm ab oder verhält sich seltsam. Docker löst dieses Problem, indem es das Programm und alle diese Zutaten in ein einziges abgeschlossenes Paket steckt. Ein solches Paket nennt man Container. Wer den Container startet, bekommt überall dieselbe Umgebung – auf dem eigenen Laptop genauso wie auf einem gemieteten Server im Internet.
Das Ende von „Bei mir läuft es doch“
Vor Docker war ein Satz in der Softwareentwicklung sprichwörtlich: „Auf meinem Rechner funktioniert es.“ Ein Entwickler schrieb ein Programm, es lief bei ihm einwandfrei, und auf dem Server des Unternehmens brach alles zusammen. Der Grund waren winzige Unterschiede: eine andere Version einer Zusatzbibliothek, ein anderes Betriebssystem, eine fehlende Einstellung. Die Fehlersuche dauerte oft Tage. Mit Containern verschwindet dieser Unterschied weitgehend, weil die Umgebung mitgeliefert wird.
Der zweite Grund für die Bedeutung von Docker ist die Größe moderner Systeme. Ein Onlineshop besteht heute nicht aus einem Programm, sondern aus dutzenden kleinen Diensten: Suche, Warenkorb, Bezahlung, Empfehlungen. Jeder Dienst läuft in einem eigenen Container. Wenn plötzlich viele Kunden gleichzeitig suchen, startet man einfach zwanzig weitere Such-Container. Die anderen Dienste bleiben unberührt.
Auch in der KI-Welt ist Docker Standard. Ein Modell braucht oft exakt passende Treiber für die Grafikkarte und exakt passende Bibliotheken. Diese Kombination von Hand einzurichten, kostet Stunden. Als Container heruntergeladen, läuft sie in Minuten.
Image, Container und der Unterschied zur virtuellen Maschine
Am Anfang steht eine Textdatei mit Bauanleitung, das Dockerfile. Darin steht Zeile für Zeile, was in das Paket gehört: welches Grundsystem, welche Zusatzprogramme, welcher eigene Programmcode. Docker arbeitet diese Anleitung ab und erzeugt daraus ein Image. Ein Image ist die fertige, unveränderliche Vorlage – vergleichbar mit einem Backrezept, das schon zum fertigen Kuchen geworden ist, aber noch in der Tiefkühltruhe liegt.
Startet man ein Image, entsteht daraus ein laufender Container. Aus einem Image kann man beliebig viele Container gleichzeitig starten. Jeder ist von den anderen abgeschottet und sieht nur seine eigene kleine Welt aus Dateien und Prozessen. Beendet man einen Container, sind alle Änderungen darin normalerweise weg. Daten, die überleben sollen, legt man deshalb bewusst außerhalb ab.
Häufig verwechselt wird Docker mit einer virtuellen Maschine. Eine virtuelle Maschine simuliert einen kompletten zweiten Computer samt eigenem Betriebssystem und braucht dafür viel Speicher und Startzeit. Container teilen sich dagegen den Systemkern des Wirtsrechners und packen nur die Ebene darüber ein. Deshalb startet ein Container in Sekundenbruchteilen statt in Minuten und ist oft nur wenige hundert Megabyte groß.
Docker in Cloud-Diensten und Entwicklerteams
Wer ein Handy oder einen Browser benutzt, sieht von Docker nichts. Trotzdem läuft ein großer Teil der Dienste, die man täglich nutzt, in Containern – von Streamingdiensten über Onlinebanking bis zu Chatbots. Große Anbieter wie Amazon Web Services, Microsoft Azure oder Google Cloud verlangen Software meist genau in dieser Form.
Fertige Images findet man in öffentlichen Sammlungen, allen voran Docker Hub. Dort liegen offizielle Pakete für Datenbanken, Webserver oder KI-Werkzeuge zum Herunterladen bereit. Ein einziger Befehl genügt, und die Software läuft. Bei der Plattform Hugging Face werden KI-Anwendungen ebenfalls als Container verteilt.
In Stellenanzeigen und Wirtschaftsnachrichten taucht der Begriff oft gemeinsam mit Kubernetes auf. Kubernetes ist ein Werkzeug, das tausende Container über viele Server hinweg verwaltet, verteilt und bei Ausfällen neu startet. Docker baut und startet die einzelnen Container, Kubernetes dirigiert die ganze Flotte. Beide zusammen bilden das Rückgrat der modernen Cloud.