Business-IT
16.03.2015
Freie Entwicklerplattform
1. Teil: „Container-Virtualisierung mit Docker“

Container-Virtualisierung mit Docker

Docker LogoDocker LogoDocker Logo
Docker
Docker ist eine offene Plattform für Entwickler und Admins, die Apps in Container verpackt. Diese sind dann auf PCs sowie in Rechenzentren, virtuellen Umgebungen oder in der Cloud ausführbar.
  • Aufbau Docker: Die Plattform setzt sich aus der eigentlichen Docker-Laufzeitumgebung und dem cloudbasierten Bedien-Service Docker Hub zusammen.
    Quelle:
    Docker
Nur selten erregte in den letzten Jahren etwas in der IT so viel Aufsehen wie die Linux-Container Docker. Was steckt hinter dieser Technik, welche Möglichkeiten bietet sie und wer unterstützt sie aktuell?
Das Erscheinen neuer Betriebssystemversionen sorgt bei professionellen IT-Anwendern und den involvierten Firmen heute eher für wenig Aufregung. Sieht man einmal von den Diskussionen um die Kacheloberfläche von Windows 8 ab, die zudem weitaus intensiver bei den Endanwendern als bei den IT-Profis stattfand, sind Techniken wie Cloud-Computing und Virtualisierung längst etabliert und werden auf breiter Basis eingesetzt.
Änderungen und Verbesserung gelangen in normalen Update-Zyklen in die Firmen und damit auch zum Anwender. Ein neuer Technikansatz muss deshalb schon eine Menge Potenzial bergen, damit große IT-Firmen und -Anbieter sich plötzlich unisono zur Unterstützung und zum Einsatz dieser Technik bekennen.
Das Open-Source-Werkzeug Docker erfüllt viele dieser Kriterien und hat im letzten Quartal 2014 und ebenso im Frühjahr 2015 für eine Menge Aufregung gesorgt. Wir stellen die Linux-Container vor, zeigen was hinter dieser Technik steckt und haben mit Firmen gesprochen, die sich bereits intensiv mit der Software befasst haben.
2. Teil: „Welche Vorteile bringen Docker-Container?“

Welche Vorteile bringen Docker-Container?

  • Holger Dyroff: Stellvertrender Vorsitzender Open Source Business Alliance
Die Frage was sich hinter der Docker-Technik verbirgt, beantwortet Solomon Hykes, Gründer und CTO der Firma Docker recht einfach und stringent: „Docker ist eine offene Plattform für Entwickler und Systemadministratoren, mit deren Hilfe sie verteilte Anwendungen erstellen, ausliefern und ausführen lassen können.“ Docker besteht dabei grundsätzlich aus zwei Hauptkomponenten, der Docker Engine, bei es sich um eine portierbare, leichtgewichtige Laufzeitumgebung handelt, und dem Hub. Dieser Hub ist ein Cloud Dienst, der das Teilen von Anwendungen und das Automatisieren von Prozessen ermöglicht. 
Mit diesem Ansatz soll das Konzept hinter Docker sowohl den Software-Entwicklern als auch den IT-Administratoren ganz ähnliche Vorteile bieten, wie sie die echten Transportcontainer der Logistik- und Transportbranche schon seit Jahrzehnten aufzeigen: Egal welche Größe, Form oder anderen Besonderheiten ein Produkt hat, es wird in einen standardisierten Container gepackt – und damit gekapselt – so dass alle anderen Unternehmen und Partner, die damit zu tun haben, problemlos, effizient und relativ unabhängig vom Inhalt damit umgehen können.
Grundsätzlich stehen Software-Entwickler und  Administratoren sowohl bei der Entwicklung von Anwendungen als auch die Systembetreuer bei der Verteilung ihre Anwendungen vor ähnlichen Problemen, wie die Industriebetriebe bei der Verteilung ihrer Waren vor der Zeit der Container. Entwickelt eine Firma eine Anwendung, so benutzt sie dazu eine bestimmte Entwicklungsumgebung samt Programmiersprache, gegebenenfalls auch spezielle Bibliotheken und ein ausgewähltes Betriebssystem. Wenn diese Entwicklung beispielsweise nur zum Testen an einen anderen Mitarbeiter weitergegeben werden soll, so muss dieser die gleichen Rahmenbedingungen schaffen, um diese Anwendung zu verwenden.
Tabelle:

3. Teil: „So profitieren Systemverwalter & Admins von Docker“

So profitieren Systemverwalter & Admins von Docker

  • Docker Hub: Hier finden Administratoren und Entwickler alles, was sie für die Arbeit mit den Containern benötigen.
Nun mag ein Systemverwalter einwenden, dass er nicht als Entwickler tätig ist, sondern dass seine Aufgabe mehr mit fertigen Anwendungen zu tun hat, die entsprechend verteilt und betrieben werden müssen und er sich nicht um Laufzeitbibliotheken und Compiler zu kümmern hat. Aber auch IT-Profis bringt diese Technik einige Vorteile: Grundsätzlich erleichtert es der Einsatz einer Container-Technik den Administratoren, ihre Anwendungen schnell und zuverlässig auf fast jeder Infrastruktur nicht nur auszurollen sondern auch zu betreiben.
Sie können auf diese Weise etwa standardisierte Umgebungen für die Produktions- und Entwicklungsabteilungen bereitstellen, bei denen Probleme mit der darunterliegenden Infrastruktur weitgehend ausgeschlossen sind. Inkonsistenzen zwischen den Entwicklungs-/Testumgebungen und den Systemumgebungen der Endanwender können so leichter ausgeschlossen werden.

Automatisierung mit geringem Overhead

  • Container testen: Auf der Website von Docker findet sich ein komplettes Paket, das unter Virtualbox auf Windows läuft.
Administratoren können weiterhin mit Hilfe dieser Technik durch Zuteilung entsprechender Container eine genauere und bessere Aufteilung von Aufgaben erreichen und zudem den gesamten IT-Lifecycle effizienter und leichter reproduzierbar gestalten. Während Entwickler sich in der Regel um den Source-Code und den damit verbundenen Problemen kümmern, ist es die Infrastruktur, die den IT-Profis in der Systembetreuung Probleme bereitet.
Für beide Problemfelder können Container durch ihren sehr geringen Overhead durchaus Erleichterungen bringen. Administratoren sind zudem immer bestrebt, so viele Aufgaben wie möglich zu automatisieren: Eine moderne IT-Verwaltung ohne Automatisierung ist heute undenkbar. Mit Hilfe der Container ist es möglich, Standardoperationen für das Starten und Stoppen von Anwendungen oder auch das Suchen sehr viel leichter zu automatisieren.
4. Teil: „Container-Techniken wie Docker sind nicht neu“

Container-Techniken wie Docker sind nicht neu

Wer schon länger im Bereich der IT tätig ist und sich dabei auch mit der einen oder anderen Linux-Distribution näher beschäftigt hat, wird schnell feststellen, dass diese Container-Technik nicht neu ist.
  • Docker Schnupperkurs: Docker bietet auf seiner Webseite einen interaktiven Emulator samt Tutorial.
Administratoren nutzen schon seit vielen Jahren die Technik sogenannter Sandboxen, um Anwendungen isoliert von Produktivumgebungen zu verteilen und zu betreiben. Das Unix-Derivat FreeBSD stellte mit dem Befehl chroot eine der ersten Möglichkeiten bereit, eine solche Isolierung durch Veränderung des Root-Verzeichnisses zu ermöglichen.
Besser umgesetzt wurden diese Möglichkeiten dann mit FreeBSD Jails, das dem Anwender ein Sandboxing zur Verfügung stellt. Dabei hatte ein solches „Gefängnis“ dann zwar Zugriff auf dem System-Kernel, konnte aber ansonsten nur auf eine sehr begrenzte Untermenge der anderen Systemressourcen zugreifen. So kann eine solche Sandbox beispielsweise nur auf zuvor definierte und festgelegte IP-Adressen zugreifen. Auch das ehemalige Sun-Unix-Betriebssystem Solaris, das nun Oracle besitzt, kann mit seinen Zones mit einer ähnlichen Technik aufwarten.
Mit LXC (Linux Containers) steht eine Schnittstelle für den User-Space, eine Programmierschnittstelle (API - Application Programming Interface) und Software-Werkzeuge zur Erstellung und Verwaltung von Linux-Containern bereit, die auf der Webseite von linuxcontainers.org als „irgendetwas in der Mitte zwischen chroot und einer vollausgestatteten virtuellen Maschine“ charakterisiert werden. Alles rund um LXC steht als freie Software im Netz zur Verfügung.
Lösungen wie Docker setzten auf LXC auf und unterstützen die entsprechenden Schnittstellen und Container und automatisieren die Erstellung und Verteilung der Container. James Bottemley, CTO Server Virtualization bei Parallels, hat es in einem seiner zahlreichen Vorträge auf den Punkt gebracht, in dem er feststellte, dass es Docker nicht nur einfacher macht, eine Anwendung in einem Container bereitzustellen, sondern dass es diese Technik dem IT-Profi auch erlaubt, eine Anwendung in einem Container auf dem Notebook zu erstellen und diesen dann in der Cloud auszurollen und zu verwenden. Damit können Systemprofis und Entwickler also im Prinzip so etwas wie eine sofortige Portabilität ihrer Anwendungen erreichen.
5. Teil: „Die Container-Technik und das Cloud-Computing“

Die Container-Technik und das Cloud-Computing

In Diskussionen zum Thema Container-Technik und Docker weisen gerade IT-Profis, die bisher noch wenig Kontakt zu dieser Software hatten, immer wieder auf die Nähe beziehungsweise die Ähnlichkeiten zur normalen Virtualisierung hin. Aber eine Stärke dieser Technik liegt gerade in den Unterschieden zu gängigen Virtualisierungs-Techniken.
  • Virtualisierung versus Docker: Während der Container die Anwendungen samt der entsprechenden Abhängigkeiten enthält, muss bei der Virtualisierung auch noch ein Gast-Betriebssystem mit eingeschlossen werden.
    Quelle:
    Docker Inc.
Grundsätzlich ist die Funktionsweise der Container durchaus der eines modernen Hypervisors vergleichbar: Anwendungen werden gekapselt und voneinander isoliert. Aber gerade Entwickler scheuen häufig den hohen Aufwand, den das Erstellen und Anlegen einer kompletten virtuellen Maschine mit sich bringt: Schließlich muss hier ein komplettes Betriebssystem Teil dieser virtuellen Maschine sein, zusätzlich zu der gewünschten Anwendung und entsprechenden Bibliotheken und weiteren benötigten Ressourcen. Eine solche Virtualisierung basiert immer auf der Emulation einer virtuellen Hardware. Das bedingt natürlich einen gewissen Overhead.
Container basieren im Gegensatz dazu auf einem Betriebssystem, das sich mehrere Container teilen – einem „shared operating system“. Dadurch können sie mit sehr viel weniger Overhead arbeiten, sie arbeiten „lightweighted“. Bei ihnen wird keine Hardware emuliert, sondern die Anwendungen laufen in ihren Containern alle auf einem Linux-System.

Systemunabhängiger Einsatz

Damit sind Container im Gegensatz zu virtuellen Maschinen auch nicht dazu in der Lage, beispielsweise unterschiedliche Betriebssysteme wie einen Windows Server 2012 R2 und einen Red Hat Server auf einem Host-System zu betreiben – alle Container verwenden das gleiche Betriebssystem.
Im Idealfall können sie dabei auch die gleichen Laufzeitbibliotheken und weitere Ressourcen gemeinsam nutzen, was dann einen noch geringeren Overhead verursacht. Ein großer Vorteil dieser Tatsache: Administratoren können mit Hilfe dieser Technik ihre Server noch weitaus besser auslasten, als dies schon mit einer Virtualisierungs-Lösung der Fall ist. Zwar gehen die Schätzungen der Experten auseinander, aber die meisten Einschätzungen reden von der zwei- bis hin zur dreifachen Last, die ein Server mit Containern im Vergleich zu virtuellen Maschinen bewältigen kann.
Schließlich eigenen sich in Container gekapselte Anwendungen sehr gut für den Einsatz in einer Cloud-Umgebung. Einmal komplett erstellte Container können dann vom Administrator sowohl im eigenen Netzwerk als auch in der Private- oder einer Public-Cloud ausgerollt und eingesetzt werden.
6. Teil: „Potenzial und Entwicklungschancen von Docker“

Potenzial und Entwicklungschancen von Docker

  • Docker im Einsatz: Viele bekannte Hersteller und Konzerne arbeiten bereits mit Docker-Lösungen.
    Quelle:
    Docker
Container-Techniken sind schon länger Bestandteil verschiedener Linux-und Unix-Systeme und deren Grundprinzip des „Sandboxing“ von Anwendungen ist altbewährt. Die rasante Verbreitung der Virtualisierungs-Techniken in fast allen Bereichen der IT hat aber sowohl Entwickler als auch die IT-Administratoren und Systembetreuer hellhörig für Techniken gemacht, die es ihnen ermöglichen ihre Server besser auszunutzen.
Die Versprechen, die das noch junge Unternehmen Docker Inc. mit seiner Technik macht, sind sehr vielfältig und die Tatsache, dass viele renommierte IT-Größen wie Microsoft, VMware, Parallels, Red Hat und Google sich sehr deutlich dazu bekennen, diese auch in ihren Betriebssystemen und Anwendungen zu unterstützen, zeigen wie ernst diese Ankündigungen genommen werden.

Docker-Entwicklung ist noch im Gange

Ein genauerer Blick auf die Technik zeigt aber auch, dass es für die Entwickler noch einige Arbeit zu tun gibt, denn bei allen Versprechen in Bezug auf die Sicherheit, die das Konzept der Sandbox verheißt, bleiben in der augenblicklichen Situation noch viele Fragen in Hinblick auf die Datensicherheit offen.
  • Ausblick: Anwendungen in einem Docker-Container sollen sowohl im Rechenzentrum der Anwender als auch in der Azure-Cloud und bei Service-Providern laufen können.
    Quelle:
    Microsoft TechNet
So haben die Analysten von Gartner eine Studie mit den Titel „Security Properties of Containers Managed by Docker“ herausgebracht. In einer Zusammenfassung des Studienergebnisses kommen die Analysten zwar zu dem Ergebnis, dass die Container-Technik aktuell durchaus weit genug entwickelt ist, um als eine PaaS-Lösung (Plattform-as-a-Service) sowohl im internen (Private) als auch im öffentlichen (Public) Bereich zum Einsatz zu kommen. Aber sie reden auch von deutlichen Schwächen, wenn es um die sichere Administration und sowohl im Business-Umfeld entscheidenden Punkte wie Verfügbarkeit, Integrität oder Vertraulichkeit geht.
Probleme, die laut Aussagen der Gartner-Studie auch bei einem Einsatz der Container innerhalb eines Hypervisor nur unwesentlich gemildert werden. Natürlich dürfen interessierte IT-Profis und Firmen in diesem Zusammenhang nicht außer Acht lassen, dass die Docker-Technik und die damit verbundenen Anwendungen sich noch in einem frühen Stadium der Entwicklung befinden. Das Engagement vieler Firmen in diesem Bereich wird dazu führen, dass noch in diesem Jahr eine deutliche Verbesserung im Bereich der Sicherheit zu sehen sein wird und einige Sicherheitslösungen für diese Technik auf dem Markt erscheinen werden.
Ein weitere Punkt ist die bereits zu beobachtende Diversifizierung im Bereich der Container-Techniken: Wie schon bei den Unix- und Linux-Derivaten in früheren Jahren scheinen die unterschiedlichen Firmen auch hier verschiedene Ansätze und Techniken zu realisieren, die im Moment zum großen Teil noch auf die Linux-Container LXC aufsetzen. Gerade die Unix/Linux-Historie zeigt aber leider, wie schnell sich solche Techniken auseinander entwickeln können, was nicht immer zum Vorteil der Anwender ist.

mehr zum Thema