Docker FAQ

Wofür Sie Container brauchen

05.07.2017 von Paul Rubens und Florian Maier
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.
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.

Server, Virtualisierung und Data Center 2017
Uwe Müller, Head of Sales & PreSales Datacenter; Cisco
"Im kommenden Jahr werden von Intel und AMD neue Prozessoren auf den Markt kommen, die einen weiteren Wettlauf um die optimale Performance-Nutzung auslösen."
Lars Göbel, Leiter Vertrieb & IT-Services; DARZ GmbH
“IT-Verantwortliche werden sich verstärkt damit auseinandersetzen, die eigene IT-Infrastruktur flexibler und agiler zu gestalten. Bestehende Komplexität zwischen parallel agierenden IT-Lösungen ist für Unternehmen zunehmend ineffizient – ein Silo-Denken von IT-Lösungen antiquiert."
Peter Duemig, Sr Server Product Manager Dell EMC
Die Trend-Themen für das kommende Jahr im Bereich Rechenzentrum sind weiterhin Converged- oder Hyper-Converged-Infrastructure-Lösungen. Auch der Trend Software-Defined wird sich noch einmal verstärken."
Udo Würtz, Chief Evangelist Data Center Business EMEIA, Fujitsu
"Für IT-Verantwortliche in Rechenzentren wird das Software Defined Data Center (SDDC) weiter an Bedeutung zunehmen. Bereitstellung, Betrieb, Wartung und Erweiterbarkeit von IT-Ressourcen erfolgen zukünftig softwaregestützt. Durch SDDC geraten Blade-Systeme an die Grenzen ihrer Möglichkeiten und werden daher an Bedeutung verlieren."
Stefan Weber, Strategic Sales Consultant HPE Server, Hewlett Packard Enterprise
Das Thema Software Defined Everything und in dem Zusammenhang Composable Infrastructure wird ein wichtiges Thema in 2017 sein. Im Hinblick auf Virtualisierung gewinnen neben den klassischen virtuellen Maschinen Container-Technologien (beispielsweise Docker) an Bedeutung."
Ingolf Wittmann, Technical Director, CTO & Leader of HPC Europe; IBM Deutschland GmbH
“Server- und Storage-Virtualisierung hat sich am Markt durchgesetzt und speziell im Storage-Umfeld auch das Thema "Software Defined". Die Netzwerktechnologie hat hier ein Stückweit einen Nachholbedarf. Auf bahnbrechende Neuerungen müssen sich hier Kunden nicht einstellen, aber das Thema Software Defined speziell auf Datacenter-Ebene mittelfristig auf der Agenda haben.“
Paul Höcherl, Produkt Manager DACH für System X; Lenovo
"Zum einen wird Bewegung in den Bereich Cloud kommen und das gilt für Private Cloud, Private Cloud als auch Hybrid-Lösungen. Ferner konnten wir eine Etablierung des Thema Hyperconverged Computing feststellen, so dass es hier zu wachsender Nachfrage kommen wird."
Dr. David Höflmayr, CEO; Thomas-Krenn AG
"Im Rechenzentrum bringen die verlangte Packungsdichte der Server und immer stromhungrigere Prozessoren herkömmliche Kühlkonzepte an ihre Grenzen. Speziell in Deutschland kommen die hohen Stromkosten hinzu. Wir erwarten deshalb, dass Flüssigkühlkonzepte aus dem High Performance Computing langsam in das Mainstream-Rechenzentrum wandern."

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.

Gibt es kostenlose Open-Source- Management-Systeme?

Ja. Das meistgenutzte und bekannteste, kostenlose Open Source Container-Management-System ist Kubernetes - ein Software-Projekt das von Google ins Leben gerufen wurde. Kubernetes stellt Funktionen zur Verfügung, um containerisierte Applikationen auszurollen, zu warten und zu skalieren.

Welche kommerziellen Container-Lösungen gibt es?

Die bekannteste, kommerzielle Container-Management-Lösung ist Docker Enterprise Edition. Die Software bietet eine integrierte, getestete und zertifizierte Plattform für Applikationen, die auf Enterprise-Linux- oder Windows-Betriebssystemen und in Cloud-Umgebungen laufen.

Darüber hinaus gibt es zahlreiche weitere Lösungen - einige davon nutzen proprietäre Software, die auf Kubernetes aufbaut. Die bekanntesten Beispiele für Container-Software dieser Art: CoreOS Tectonic, Red Hat Open Shift Container Platform und Rancher.

Wie sicher sind Container?

Viele Leute glauben, dass Container nicht so sicher sind wie virtuelle Maschinen. Der Grund: Wenn im Container Host Kernel eine Schwachstelle besteht, könnte diese einen Weg zu den anderen Containern ebnen, die ebenfalls den Kernel nutzen. Das stimmt im Fall eines Hypervisors auch - allerdings bietet dieser weit weniger Funktionalitäten als ein Linux-Kernel und weist deswegen auch eine wesentlich kleinere Angriffsfläche auf.

In den letzten Jahren wurde außerdem viel Aufwand in die Entwicklung von Software gesteckt, die das Sicherheitsniveau von Containern verbessern soll. Einige Softwarelösungen - darunter auch Docker - beinhalten beispielsweise inzwischen eine signaturbasierte Infrastruktur, um zu verhindern, dass nicht vertrauenswürdige Container ausgerollt werden.

Trotzdem muss auch ein signierter Container nicht notwendigerweise sicher sein. Schließlich kann eine Schwachstelle in der Software auch erst nach der Signatur entdeckt werden. Deswegen bieten Docker und Co. auch Software an, die Security-Scans von Containern durchführt und die Administratoren alarmiert, wenn die Images Schwachstellen aufweisen, die ausgenutzt werden könnten.

Auch spezialisiertere Security-Softwarelösungen gibt es bereits am Markt. Twistlock bietet beispielsweise Software an, die das erwartete Verhalten eines Containers analysiert und Prozesse, Netzwerk-Aktivitäten und sogar Storage-Praktiken laufend auf Auffälligkeiten untersucht. Ein weiteres Unternehmen, das sich auf Container-Sicherheit spezialisiert hat ist Polyverse.

Welche Linux-Distributionen eignen sich für Container?

Die meisten Linux-Distributionen sind unnötig mit Features überladen - wenn sie einfach nur als Container-Host zum Einsatz kommen sollen. Aus diesem Grund gibt es einige Distributionen, die speziell für den Betrieb von Containern ausgelegt sind. Dazu gehören:

Was, wenn ich Windows-User bin?

Docker läuft nicht nur auf allen Linux-Distributionen die neuer sind als Version 3.10, sondern auch auf Windows, seit Microsoft 2016 die Möglichkeit geschaffen hat, Windows Container unter Windows Server 2016 und Windows 10 zu betreiben. Diese Container sind auf Windows ausgelegt und können mit jedem Docker-Client oder mit Microsofts PowerShell gemanagt werden.

Neben Windows und Linux läuft Docker auch auf den beliebten Cloud-Plattformen - etwa Amazon EC2, Google Computer Engine, Microsoft Azure oder Rackspace.

Werden Container Virtualisierung ersetzen?

Das ist für die nähere Zukunft unwahrscheinlich. Und zwar aus mehreren Gründen. Einerseits besteht weiterhin die landläufige Meinung, virtuelle Maschinen seien Containern aufgrund ihrer Isolation in Sachen Security überlegen. Andererseits sind auch die Tools, die derzeit zur Verfügung stehen, um große Container-Mengen zu managen, nicht mit denen vergleichbar, die für das Management virtualisierter Infrastrukturen zum Einsatz kommen (beispielsweise VMware vCenter oder Microsoft System Center). Unternehmen die signifikante Beträge in diese Art der Software investiert haben, werden ihre virtualisierte Infrastruktur nicht ohne wirklich guten Grund aufgeben.

Was vielleicht noch wichtiger ist: Virtualisierung und Container werden mehr und mehr als komplementäre Technologien denn als Konkurrenzprodukte gesehen. Schließlich können Container auch in virtuellen Maschinen betrieben werden, um den Grad der Isolation - und damit das Sicherheitsniveau - anzuheben. Zudem macht es die Virtualisierung von Hardware deutlich einfacher, die für den Betrieb von Containern benötigte Infrastruktur zu managen. Es kann also durchaus nützlich sein, beide Technologien miteinander zu kombinieren.

Dieser Artikel basiert auf einem Beitrag unserer US-Schwesterpublikation cio.com.

Wie Container den Durchbruch im Unternehmen schaffen
Einbindung ins Rechenzentrum
Um ihre volle Wirkung entfalten zu können, muss es möglich sein, Container in die bestehende IT-Infrastruktur des Unternehmens mit ihren Services einzubetten - seien es beispielsweise Security-, Authentisierungs- oder Netzwerk-Dienste.
VM-Management statt Chaos
Die IT-Verantwortlichen müssen einen Weg finden, ihre virtuellen Maschinen (VM) übersichtlich zu verwalten und die Kunden trotzdem parallel mit den benötigten Services zu versorgen.
Skalierbarkeit
Die heutige, hochdynamische Unternehmens-IT macht es erforderlich, dass Unternehmen ihre Container-Technlogie und die Kapazitäten zur Bereitstellung an die Anwender programmatisch skalieren können.
Orchestrierung
Unternehmen müssen mehrere Container miteinander kombinieren, Container mit anderen Applikationen kombinieren und die Kommunikation zwischen Containern und anderen IT-Ressourcen ermöglichen. Um all das zu erreichen, müssen die Container auch in einer Umgebung entwickelt werden, die diesen Mix aus Technologien und Rechenkapazitäten abbildet.
Legacy-Systeme beachten
Container müssen nicht nur mit den neuesten Anwendungen und Systemen im Unternehmen harmonieren, sondern auch die Altsysteme berücksichtigen.