Was sind Container und was macht man damit?

Container vs. Virtualisierung

Wofür sind Container gut? Hier sind zehn häufig gestellte Fragen bezüglich Application Container im Allgemeinen und Docker im Speziellen.

Docker ist erst vor wenigen Jahren in der IT-Szene erschienen, sorgt seit dem aber beständig für Aufregung. Das Application Container-Verfahren von Docker verspricht die IT genauso umzukrempeln, wie das die Virtualisierung vor einigen Jahren bereits getan hat.

Hier sind die zehn am häufigsten zu dieser Technologie gestellten Fragen:

Was sind Container und wofür sind sie gut?

Container sorgen dafür, dass Software verlässlich läuft, nachdem sie von einer Umgebung in eine andere versetzt worden ist, beispielsweise vom Laptop des Entwicklers in eine Testumgebung, von der Testumgebung in die Produktion oder von einem physikalischen Computer in einem Rechenzentrum auf eine virtuelle Maschine (VM) in einer privaten oder öffentlichen Cloud. Dafür können Sie Container verwenden. Wenn sie keine Hardware anfassen wollen, dann können Sie auch Virtualisierung einsetzen.

Die ersten Probleme tauchen auf, sobald die die verschobene Software umgebenden Systeme nicht identisch sind, so Solomon Hykes, der Entwickler von Docker, "Sie haben es mit Python 2.7 getestet, danach läuft es aber in der Produktion auf Python 3, und schon passieren die wildesten Sachen. Oder Sie verlassen sich darauf, dass eine bestimmte Version einer SSL-Bibliothek installiert ist, tatsächlich aber handelt es sich um eine andere. Oder sie haben im Testbetrieb Debian eingesetzt, in der Produktion ist aber Red Hat installiert. Wieder werden wilde Sachen passieren."

Aber nicht nur die Softwareumgebung hat großen Einfluss, fügt er hinzu: "Die Netzwerktopologie mag anders sein, oder die Sicherheitsbestimmungen oder der Speicher - trotzdem muss die Software laufen."

Wie versuchen Container dieses Problem zu lösen?

Nehmen wir der einfachheithalber an, dass ein Container aus einer kompletten Runtime-Umgebung besteht: aus einer Applikation inklusive aller Abhängigkeiten, Bibliotheken und andere Binär- und Konfigurationsdateien sowie Konfigurationsfunktionen, alles in ein Paket verschnürt. Durch die Containerisierung der Applikationsplattform und ihrer Anhängsel werden die Unterschiede in den diversen Betriebssystemdistributionen abstrahiert und damit ausgehebelt.

Hört sich nach Virtualisierung an. Wo ist der Unterschied?

Bei der Virtualisierung besteht das Paket aus einer VM inklusive Betriebssystem und Applikation. Ein physikalischer Server mit drei virtuellen Maschinen würde über einen Hypervisor und darauf drei separate Betriebssysteme bestehen.

Im Unterschied dazu läuft auf einem Server mit drei containerisierten Applikationen nur ein Betriebssystem, das sich alle drei Container teilen. Die von allen dreien genutzten Teile des Betriebssystems werden nur einmal gelesen, dazu hat jeder Container individuelle Zugriffsrechte auf das Betriebssystem. Dadurch sind Container sehr viel "leichter" als virtuelle Maschinen und benötigen weniger Ressourcen.

Welchen Unterschied macht das in der Praxis?

Ein Container mit demselben Inhalt wie eine VM enthält extreme viel weniger Bytes, wir sprechen von Megabytes bei Container im Gegensatz zu Gigabytes bei VMs. Daher kann ein Server auch sehr viel mehr Container fassen als VMs. Zudem benötigen VMs manchmal mehrere Minuten um zu booten, Apps in Container dagegen stehen beinahe sofort zur Verfügung.