Wenn Sie im IT-Umfeld von Rechenzentren oder Cloud Computing tätig sind, dürften Sie seit mehr als einem Jahr von gewöhnlichen Containern, insbesondere Docker, gehört haben, und die Nachrichten darüber haben nie aufgehört. Nach der Veröffentlichung von Docker 1.0 im Juni 2014 erreichte seine Dynamik ein beispielloses Niveau.

Der Grund für so großes Aufsehen ist, dass viele Unternehmen Docker mit erstaunlicher Geschwindigkeit übernehmen. Auf der OSCon (Open Source Convention) im Juli 2014 traf ich unzählige Unternehmen, die Serveranwendungen bereits von virtuellen Maschinen (VMs) auf Container umgestellt hatten. Tatsächlich sagte mir James Turnbull, Vice President of Services and Support bei Docker, auf der Konferenz, dass drei große Banken die Beta-Version von Docker genutzt hätten und Docker nun in der Produktion einsetzten. Für jede junge Technologie ist dies zweifellos ein sehr selbstbewusster Schritt, zumal es in der sicherheitsorientierten Finanzwelt nahezu beispiellos ist.

Gleichzeitig ist Docker, eine Open-Source-Technologie, nicht nur ein Liebling in den Augen von Linux-Giganten wie Red Hat und Canonical. Auch proprietäre Softwareunternehmen wie Microsoft umarmen Docker warm.

Warum also sind alle hinter Containern und Docker her? James Bottomley ist Chief Technology Officer für Servervirtualisierung bei Parallels und ein bekannter Linux-Kernel-Entwickler. Er erklärte mir, dass Hypervisoren wie Hyper-V, KVM und Xen alle „auf virtualisierten Hardware-Emulationsmechanismen basieren. Das bedeutet, dass sie hohe Systemanforderungen haben.“

Container verwenden jedoch ein gemeinsam genutztes Betriebssystem. Das bedeutet, dass sie bei der Nutzung von Systemressourcen viel effizienter sind als Hypervisoren. Anstatt Hardware zu virtualisieren, liegen Container auf einer einzigen Linux-Instanz. Das wiederum bedeutet, dass Sie „die nutzlosen 99,9 % des virtuellen Maschinen-Ballasts verwerfen können und einen kleinen, ordentlichen, kapselartigen Container zurücklassen, der Ihre Anwendung enthält“, sagte Bottomley.

Laut Bottomley können Sie mit einem vollständig optimierten Containersystem auf derselben Hardware vier- bis sechsmal so viele Serveranwendungsinstanzen betreiben wie mit Xen- oder KVM-Virtualmaschinen.

Klingt das nicht großartig? Schließlich können Sie viel mehr Anwendungen auf dem Server ausführen. Warum hat das also noch niemand zuvor gemacht? Tatsächlich hat es schon jemand gemacht. Container sind eigentlich ein altes Konzept.

Container lassen sich mindestens bis ins Jahr 2000 und auf FreeBSD Jails zurückverfolgen. Oracle Solaris hat ebenfalls ein ähnliches Konzept namens Zones; Unternehmen wie Parallels, Google und Docker haben an Open-Source-Projekten wie OpenVZ und LXC (Linux Containers) gearbeitet, um Container reibungslos und sicher auszuführen.

Tatsächlich wissen nur wenige Menschen über Container Bescheid, aber die meisten verwenden Container schon seit Jahren. Google hat seine eigene Open-Source-Containertechnologie lmctfy (Let Me Contain That For You). Immer wenn Sie eine Google-Funktion nutzen, etwa die Suche, Gmail, Google Docs oder etwas anderes, wird ein neuer Container zugewiesen.

Docker baut jedoch auf LXC auf. Wie jede Containertechnologie hat sie aus Sicht der Anwendung ihr eigenes Dateisystem, Speichersystem, Prozessor, Arbeitsspeicher und andere Komponenten. Der Hauptunterschied zwischen Containern und virtuellen Maschinen besteht darin, dass Hypervisoren das gesamte Gerät abstrahieren, während Container nur den Betriebssystem-Kernel abstrahieren.

Das wiederum bedeutet: Eine Sache, die ein Hypervisor kann, Container aber nicht, ist die Verwendung unterschiedlicher Betriebssysteme oder Kernel. So können Sie beispielsweise Microsoft Azure verwenden, um gleichzeitig Instanzen von Windows Server 2012 und SUSE Linux Enterprise Server auszuführen. Was Docker betrifft, müssen alle Container dasselbe Betriebssystem und denselben Kernel verwenden.

Wenn Sie andererseits einfach so viele Serveranwendungsinstanzen wie möglich auf möglichst wenig Hardware ausführen möchten, ist es Ihnen vielleicht nicht so wichtig, mehrere Betriebssystem-Virtualmaschinen auszuführen. Wenn Sie genau mehrere Kopien derselben Anwendung benötigen, werden Sie Container lieben.

Der Umstieg auf Docker dürfte Rechenzentren oder Cloud-Computing-Dienstanbietern jährlich zig Millionen Dollar an Strom- und Hardwarekosten ersparen. Kein Wunder, dass sie eilig sind, Docker so schnell wie möglich einzuführen.

Docker bringt mehrere neue Funktionen mit, die frühere Technologien nicht hatten. Erstens macht Docker Container im Vergleich zu früheren Methoden einfacher und sicherer bereitzustellen und zu verwenden. Darüber hinaus bringt Docker, da es mit anderen Giganten im Container-Bereich, darunter Canonical, Google, Red Hat und Parallels, zusammengearbeitet hat, um seine wichtige Open-Source-Komponente libcontainer gemeinsam zu entwickeln, dringend benötigte Standardisierung für Container.

Gleichzeitig können Entwickler Docker verwenden, um jede Anwendung zu paketieren, auszuliefern und auszuführen. Die Anwendung wird zu einem leichtgewichtigen, portablen, eigenständigen LXC-Container, der überall ausgeführt werden kann. Wie Bottomley mir sagte: „Container verleihen Ihnen unmittelbare Anwendungsportabilität.“

Jay Lyman, leitender Analyst beim Marktforschungsunternehmen 451 Research, fügte hinzu: „Organisationen sind bestrebt, Anwendungen und Workloads einfacher auf effiziente, standardisierte, wiederholbare Weise portierbar und verteilbar zu machen, was manchmal schwer zu erreichen ist. So wie GitHub durch gemeinsamen Quellcode Zusammenarbeit und Innovation fördert, helfen Docker Hub, Official Repos und kommerzieller Support auch vielen Unternehmen, diese Herausforderung zu bewältigen, indem sie die Art und Weise verbessern, wie Anwendungen paketiert, bereitgestellt und verwaltet werden.“

Nicht zuletzt lassen sich Docker-Container einfach in die Cloud bereitstellen. Wie Ben Lloyd Pearson auf opensource.com schrieb: "Docker verfolgt einen besonderen Ansatz, sodass es in die meisten DevOps-Anwendungen (Development Operations) integriert werden kann, einschließlich Puppet, Chef, Vagrant und Ansible, oder allein zur Verwaltung von Entwicklungsumgebungen verwendet werden kann. Der Hauptvorteil ist, dass es viele der Aufgaben vereinfacht, die normalerweise von diesen anderen Anwendungen ausgeführt werden. Konkret können Personen mit Docker eine lokale Entwicklungsumgebung erstellen, die mit dem Live-Server identisch ist, mehrere Entwicklungsumgebungen vom selben Host aus ausführen (jede mit eigener Software, eigenem Betriebssystem und eigener Konfiguration), Projekte auf neuen oder anderen Servern testen und es jedem ermöglichen, am selben Projekt mit identischen Einstellungen zu arbeiten, unabhängig von der lokalen Host-Umgebung."

Kurz gesagt, was Docker für Sie tun kann, ist: Im Vergleich zu anderen Technologien ermöglicht es, dass mehr Anwendungen auf derselben Hardware laufen; es macht es Entwicklern leicht, schnell sofort ausführbare containerisierte Anwendungen zu erstellen; es vereinfacht die Aufgaben der Verwaltung und Bereitstellung von Anwendungen erheblich. Alles in allem kann ich verstehen, warum Docker als Technologie auf Unternehmensebene plötzlich so beliebt geworden ist. Ich hoffe nur, dass es den Erwartungen gerecht wird; andernfalls wird es da draußen einige besorgte CEOs und CIOs geben.

Quelle: http://cloud.51cto.com/art/201410/453718.htm