Was macht eigentlich Docker?

Docker ist allgegenwärtig: seit seiner Gründung hat das amerikanische Unternehmen mehrere hundert Millionen Dollar an Kapital gesammelt und damit ein Software-Ökosystem gebaut, das in Raketengeschwindigkeit die IT-Welt erobert hat. Heute arbeitet fast jedes seriöse Softwareunternehmen mit Docker – da ist auch K&K Software keine Ausnahme. Aber was macht Docker überhaupt und wie konnte es so erfolgreich werden?

bilder/docker-startfolie.png

Das Containerschiff der Softwareentwicklung

Docker ist allgegenwärtig: seit der Gründung der Docker Inc. (damals noch dotCloud) im Jahr 2008, hat das amerikanische Unternehmen mehrere hundert Millionen Dollar an Kapital gesammelt und damit ein Software-Ökosystem gebaut, das in Raketengeschwindigkeit die IT-Welt erobert hat. In den 2010er-Jahren haben sich die Nutzerzahlen vervielfacht. Heute arbeitet fast jedes seriöse Softwareunternehmen mit Docker – da sind auch K&K Software und ERPNext keine Ausnahme.

Aber was macht Docker überhaupt? Warum ist Docker Inc. so kometenhaft aufgestiegen? Und warum setzen Entwickler aus aller Welt auf die Software des Unternehmens? Die Antworten auf diese Fragen führen uns tief in die Praktiken der Softwareentwicklung und Virtualisierung (lesen Sie hier mehr zum Begriff). Sie lernen damit nicht mit Docker einen der geheimen Champions der modernen IT kennen, sondern lernen auch, wie ihre Programme eigentlich unter der Haube ticken.

 

Das Logo von Docker. Zu der Symbolik kommen wir in Kürze. Bild: Docker.

 

Eine kleine Unternehmensgeschichte

Aber zuerst einmal zur Docker Inc. Die hatte erstmal eher bescheidene Anfänge. 2008 gründete Solomon Hykes mit zwei Freunden – Kamel Founadi und Sebastien Pahl – das Unternehmen aus der Wohnung seiner Mutter in Paris heraus. Damals hieß die Firma noch dotCloud, spezialisierte sich aber schon auf die Arbeit mit Softwarecontainern. Was das genau bedeutet, werden wir in Kürze erfahren.

Der kometenhafte Aufstieg des jungen Unternehmens sollte aber erst Mitte der 2010er-Jahre beginnen. Inzwischen war dotCloud in die USA umgezogen, wurde dort inkorporiert (man beachte das Inc.), und bekam mit dem Industrieveteranen Benjamin Golub einen prominenten neuen CEO.

Nach einem Einstieg der Linux-Provider von RedHat, Microsoft, Amazon, und sogar dem CIA, die alle das enorme Potential in der Entwicklung von Container- und Cloudlösungen sahen, war die Firma im Jahr 2016 bereits über eine Milliarde Euro schwer; ein sogenanntes „Einhorn“.

Die aktuellen Unternehmenswerte sind nicht mehr öffentlich zugänglich. Sicher ist: obwohl schon mehrfach totgesagt, zuletzt auch von heise.de im Jahre 2019, hält sich Docker hartnäckig am Markt. Kein Wunder: das Softwaremodell, das unter anderem eine reibungslose Integration von Software in die Cloud erlaubt, bleibt in Zeiten der digitalen Transformation hochrelevant.

Aber was macht Docker jetzt eigentlich?

Wenn Sie an einem Computer ein Programm – zum Beispiel Word – ausführen, dann steht das Programm nicht für sich allein. Programme sind vielmehr aus vielen einzelnen Komponenten zusammengesetzt, die erst im Zusammenspiel das ergeben, was Sie auf dem Bildschirm sehen: Standards für das Abspielen von Tönen zum Beispiel, oder für die Eingabe von Befehlen.

Um auf Programmteile zugreifen zu können, die man nicht von Grund auf selbst geschrieben hat, werden Links benutzt. So muss man nicht immer das Rad neu erfinden, sondern kann dem Programm einfach sagen: „So spielst du eine mp3 ab.“

Diese Links funktionieren auf zwei unterschiedliche Arten:

1. Man verknüpft die Teile statisch. Das bedeutet, dass man die fehlenden Programmteile mit dem Programm selbst ausliefert, und sie aus den fixen Dateien in den laufenden Betrieb einfügt.

So ein Code ist sehr verlässlich. Die Programmteile bleiben immer identisch und fügen sich nahtlos in den restlichen Code ein. Allerdings sorgt statisches Linken auch dafür, dass Programme sehr viel langsamer laufen, da sie mehr Ballast mitbringen. Außerdem werden die gelieferten Programme größer. Logisch: jedes bisschen Code muss voll realisiert mit dem Programm selbst mitgeliefert werden. Das kann zu einer unübersichtlichen und unnötig schweren Angelegenheit werden.

2. Aus diesen Gründen wird heute häufig dynamisch verlinkt. Das bedeutet, dass man auf Orte im System verweist, in denen Programmteile zu finden sind. So hat z.B. jedes Windows-System einen Code zum Abspielen von mp3s. Der Code kann einfach mit dem Finger darauf zeigen und dem Programm sagen: „Da findest du die Anleitung.“

Dynamisches Linken ist schneller, unkomplizierter und spart eine Menge Ressourcen. Wo vorher auf ganze Codes zugegriffen werden musste, steht jetzt nur noch ein kleiner Link. Das kommt aber mit einem Preis: das Programm ist davon abhängig, alle Programmteile auch wirklich da zu finden, wo man sie erwartet. Bei anderen Betriebssystemen oder nach Updates kann das nicht immer garantiert werden.

 

Jedes Programm muss auf Bibliotheken zugreifen. Bild: Wikimedia.

 

Noch komplexer wird es, wenn ein Programm nicht nur aus mehreren Programmteilen, sondern mehreren kleineren Programmen besteht. Da ist ein Programm schnell abhängig von einer bestimmten Datenstruktur oder einem bestimmten Betriebssystem in einer exakten Version.

Docker umgeht dieses Problem, indem es Programme in eine vom Betriebssystem isolierte und virtualisierte Struktur packt. Das heißt, dass die Links zwar dynamisch sind, aber die Verbindungen immer feststehen. Ganz egal, wo das Programm läuft. Außerdem werden die Teile ebenfalls mitgeliefert: damit garantiert man schnell und stabil laufende Programme bei gleichzeitiger Updatesicherheit.

Aber wie macht Docker das? Sie nutzen ein sehr altes Feature: die sogenannten Container.

Container?

Wer sich das Logo von Docker mal näher ansieht, wird viele Schiffscontainer auf dem Rücken eines Walfischs bemerken. Diese Metapher kommt nicht von ungefähr: schon lange vor Docker ordneten Betriebssysteme ihre Anwendungen unter Zuhilfenahme von Containern.

Dabei machen diese virtuellen Container genau das, was echte Container auch machen: sie packen einen Haufen Anwendungen, Codes, Programmteile, usw. in eine abgeschlossene Box. Damit wird garantiert, dass das Programm nicht „überläuft“; ein Programm, das in einem Container ausgeführt wird, kann nicht über dessen Rand hinausschauen. Das ist auch eine Sicherheitsfrage: der Kern des Systems und die auch ihm laufenden Programme bleiben sauber getrennt.

Die gängigste Art von Containern sind Userkonten: Ihr Benutzerkonto auf Windows oder Mac ist im Prinzip nichts anderes als ein Container, der auf den Kern Ihres Betriebssystems geladen wird. Deswegen müssen Programme beim Abmelden auch alle beendet werden – der Container, in dem sie laufen, ist ja dann schließlich nicht mehr existent.

Schlank und zuverlässig

Docker ist wiederum eine Art Transportschiff für Container. Setzt man ein Programm mit dessen Hilfe zusammen, werden die verschiedenen Sub-Programme in ihre eigenen Container gesteckt, die dann wiederum untereinander kommunizieren können – man befindet sich ja auf dem gleichen „Boot“.

 

Ja, Software funktioniert ein bisschen wir ein Containerschiff. Bild: Wikimedia.

 

Dieses Vorgehen hat mehrere Vorteile:

1. Docker ist sicher. Die Container haben keinen Zugriff auf irgendetwas, das außerhalb des Containers existiert. Damit können Programme, sogar wenn sie beispielsweise mit einem Virus infiziert wären, bei einem korrekt konfigurierten Docker-Programm nie auf den Kern Ihres Computers zugreifen.

2. Docker ist kompatibel. Alle Programmteile werden in ihren eigenen Containern mitgeliefert. Damit laufen mit dieser Software zusammengesetzte Programme deutlich einfacher auf unterschiedlichen Betriebssystemen und sollten prinzipiell jedes Update überleben.

3. Docker ist ein Leichtgewicht. Die Container enthalten nur das nötigste und werden nur dann erstellt, wenn man sie konkret benötigt. Das bedeutet, dass man mehrere Container gleichzeitig aufmachen und so auch komplexe Programme einfach zusammenschalten kann. Außerdem spart dieses Vorgehen eine Menge Ressourcen.

4. Docker ist portabel. Da alle Teile mit dem Programm mitgeliefert werden, kann man Docker-Programme theoretisch überall laufen lassen. Das gilt vor allem auch für Clouds und das Internet. Dieses Feature ist in Zeiten des Cloud-Computings hauptverantwortlich für den Hype um Docker.

Übrigens: Docker ist open-source. Das bedeutet, dass die Anwendung jeden Tag von einem Heer an Programmierern optimiert und abgesichert wird. Diese Offenheit ist uns bei K&K Software besonders wichtig – aus vielen guten Gründen.

Ein Allheilmittel?

Natürlich ist Docker nicht das perfekte Programm. In der Vergangenheit kam es zu Sicherheitsproblemen und sogar zu einem Datenleck. Falsch konfiguriert kann Docker außerdem eine Hintertür zum Kern des Nutzersystems aufmachen. In professionellen Händen sollten derartige Fehler aber nicht passieren.

Außerdem hat die Docker Inc. in der Vergangenheit Probleme mit ihrer Rentabilität gehabt. Deshalb arbeitet das Unternehmen jetzt an neuen Finanzierungsmodellen; und das kommt nicht überall gut an. Alternativen stehen schon in den Startlöchern: alternative Container-Programme wie Buildah oder Containerd – beide jeweils auch open-source – stehen schon bereit, um etwas vom Docker-Kuchen abzubekommen.

Aktuell führen aber nur wenige Wege an Docker vorbei. Das Programm funktioniert zuverlässig, und die Docker Inc. kann sich über einen hohen und durch prominente Investoren gesicherten Marktanteil freuen. Bei K&K-Software arbeiten wir auf jeden Fall gerne mit Docker.

Den Dingen auf den Grund gehen

Ob das in der Zukunft weiterhin der Fall sein wird, das steht natürlich in den Sternen. Wir hoffen auf jeden Fall, dass Sie auf der Reise durch die Containerlandschaften von Docker einen tieferen Einblick in die Praxis der Softwareentwicklung erhalten haben.

Wenn Sie weitere Fragen haben oder an einer individuellen Softwareentwicklung bei uns interessiert sind, zögern Sie nicht, mit uns Kontakt aufzunehmen. Unser Team aus IT-Expert*innen freut sich darauf, Sie und Ihr Unternehmen in allen Fragen rund ums Digitale zu unterstützen – ganz egal, ob Sie in Unterfranken oder anderswo im DACH-Raum sind.  


Beitrag vom 07.10.2022

Kommentar abgeben: