Docker FAQ

Wofür Sie Container brauchen

05.07.2017
Von  und
Paul Rubens ist Journalist mit dem Fachgebiet Technologie und lebt in England.


Florian Maier beschäftigt sich mit diversen Themen rund um Technologie und Management.
Docker? Container? Wenn diese Begriffe in Ihrem Kopf nur Fragezeichen hinterlassen, sollten Sie unbedingt weiterlesen.

Docker eroberte die IT-Welt im Jahr 2013 im Sturm - und ist immer noch in aller Munde. Die Container-Technologie verspricht, die Art und Weise zu revolutionieren, wie IT-Abteilungen in ihren Anwendungslandschaften arbeiten - ungefähr so, wie es die Virtualisierung ein paar Jahre zuvor getan hat. Wir haben die 13 wichtigsten Fragen und Antworten in Zusammenhang mit Docker und Containern für Sie zusammengetragen.

Noch Fragen in Sachen Docker und Container? Wir haben die Antworten.
Noch Fragen in Sachen Docker und Container? Wir haben die Antworten.
Foto: Lightspring - shutterstock.com

Was sind Container und wofür braucht man sie?

Container schaffen eine stabile Ablaufumgebung für Anwendungen, zum Beispiel wenn die Software "umziehen" muss - vom Laptop eines Entwicklers in eine Test-Umgebung, ein Data Center oder die Public Cloud.

Hierbei können Probleme auftreten, wenn die Software-Umgebungen nicht identisch sind, wie Docker-Gründer Solomon Hykes weiß: "Sie testen mit Phyton 2.7, in der Produktion läuft dann aber alles auf Phyton 3 und plötzlich passieren seltsame Dinge. Oder Sie verlassen sich auf die Funktionsweise einer bestimmten SSL-Version, aber dann wird eine andere installiert. Auch wenn Sie Ihr Testing auf Debian durchführen und die Produktion auf Red Hat läuft, passieren jede Menge Merkwürdigkeiten."

Wobei es aber nicht so sei, dass nur unterschiedliche Software für Probleme sorgen kann: "Es können auch Unterschiede bei Netzwerk-Topologie, Security Policy oder Storage bestehen - aber die Software muss darauf laufen."

Wie lösen Container dieses Problem?

Einfach ausgedrückt besteht ein Container aus einer kompletten Laufzeit-Umgebung: der Applikation (mit allen Anhängseln), Programmbibliotheken, Konfigurationsdateien und allen sonst nötigen Tools. Durch die Containerisierung von Applikations-Plattformen werden Unterschiede hinsichtlich Betriebssystem-Distributionen und der darunterliegenden Infrastruktur abstrahiert.

Was ist der Unterschied zwischen Containern und Virtualisierung?

Bei der Virtualisierung ist das Paket das herumgeschickt wird, eine virtuelle Maschine und beinhaltet sowohl ein komplettes Betriebssystem als auch die Applikation. Ein physischer Server auf dem drei virtuelle Maschinen laufen, hätte einen Hypervisor und drei getrennt darauf laufende Systeme.

Im Gegensatz dazu läuft auf einem Server mit drei containerisierten Applikationen nur ein Betriebssystem. Die Container teilen sich den Betriebssystem-Kernel untereinander. Diese Bereiche beschränken sich auf ‚read only‘ - darüber hinaus besitzt jeder Container auch einen eigenen Bereich für ‚writing‘-Tasks. Dank dieser Konstellation benötigen Container wesentlich weniger Ressourcen als virtuelle Maschinen.

Welche anderen Vorteile bieten Container?

Ein Container ist in der Regel nicht größer als 100 Megabyte, während eine virtuelle Maschine mit ihrem eigenen Betriebssystem auch mehrere Gigabyte in Anspruch nehmen kann. Deswegen kann ein einzelner Server auch wesentlich mehr Container als virtuelle Maschinen hosten.

Ein weiterer Vorteil: Containerisierte Applikationen können fast aus dem Stand gestartet werden, während virtuelle Maschinen einige Minuten für den Boot-Vorgang opfern müssen, bevor die Applikationen gestartet werden können. Container können also ‚just in time‘ genutzt werden, wenn sie gebraucht werden und verschwinden anschließend wieder still. Das spart Ressourcen.

Ein dritter Vorteil der Containerisierung ist, dass diese modulare Systeme erlaubt. Statt eine komplette, komplexe Applikation in einem Container zu betreiben, lässt sich diese in Module aufteilen (zum Beispiel Database, Front End, etc.). Das ist der sogenannte Microservices-Ansatz. Applikationen, die nach diesem Schema aufgebaut sind, sind leichter zu managen, weil die einzelnen Module überschaubar bleiben und Änderungen auf Modulebene jederzeit möglich sind - ohne dazu die ganze Applikation neu schreiben zu müssen.

Wo liegt der Unterschied zwischen Docker und Containern?

Docker ist inzwischen zu einem Synonym für die Container-Technologie geworden. Das liegt daran, dass die Open-Source-Software am erfolgreichsten darin war, die Technologie populär zu machen. Container selbst sind allerdings nicht neu - sie kommen bei Linux (in Form von LXC) schon seit mehr als zehn Jahren zum Einsatz. Weitere Lösungen sind zum Beispiel FreeBSD jails, AIX Workload Partitions oder Solaris Containers.

Gibt es ein Standard-Container-Format?

Im Jahr 2015 produzierte ein Unternehmen namens CoreOS seine eigene App Container Image (ACI)-Spezifikation, die sich von der Docker-Variante unterschied. Zur damaligen Zeit bestand das Risiko, dass es innerhalb der gerade im Aufschwung befindlichen "Container-Bewegung" zu einer Fragmentierung mit rivalisierenden Linux-Container-Formaten kommt.

Diese Gefahr wurde noch im selben Jahr durch die Gründung der Open Container Intitiative (OCI, vormals Open Container Project) gebannt. Unter Federführung der Linux Foundation soll die OCI Industrie-Standards für Container-Formate definieren. Die Basis für die OCI-Standards bildet wiederum die Docker-Technologie: das Unternehmen stellte fünf Prozent seiner Codebasis zur Verfügung, um das Projekt zum Fliegen zu bringen.

Zu den Sponsoren der Open Container Intitiative gehören neben Docker unter anderem auch AWS, Google, IBM, HP, Microsoft, VMware, Red Hat, Oracle, Twitter und CoreOS.

Was hat es mit der Open Container Initiative auf sich?

Die Mission der OCI ist es, die Container-Technologie auf ein standardisiertes Fundament zu stellen, das Vorteile für alle Beteiligten mit sich bringt. Statt Ressourcen auf die Entwicklung konkurrierender Container-Formate zu verwenden, können sich die beteiligten Unternehmen darauf fokussieren, zusätzliche Software zu entwickeln, die nötig ist, um die Nutzung von standardisierten Containern im Unternehmens- und Cloud-Umfeld zu ermöglichen. Dabei handelt es sich zum Beispiel um Container-Management- oder -Security-Systeme.