20.10.2015

Docker: Container-Virtualisierung leicht gemacht

Während inzwischen fast jeder, der oder die in irgend einer Form mit IT zu tun hat, weiss, dass man heutzutage dank Virtualisierung keineswegs mehr jedes Mal einen ganzen Server kaufen muss, wenn man ein neues System benötigt, hat sich eine andere Idee noch nicht so weit herumgesprochen: Die Virtualisierung innerhalb desselben Betriebssystems mittels Containern. Einer der bekanntesten Vertreter dieser Idee heisst Docker und wird sogar im neuen Windows Server 2016 enthalten sein.

Von: Lars Behrens   Drucken Teilen   Kommentieren  

Lars Behrens, Dipl.-Paed

Lars Behrens ist Geschäftsführer der Firma MaLiWi IT. Staatlich geprüfter Netzwerkadministrator, Microsoft MCP/Linux LCP. Er hat langjährige Erfahrung in der Beratung bei Planung und Einrichtung von IT-Systemen und Netzwerken und dem Support heterogener Systeme (Apple Macintosh, Microsoft Windows, Linux). Universitätsstudium der Pädagogik, mehrere Jahre Tätigkeit im Ausland. Seminar- und Kursleiter, Referent und Fachbuchautor. Weiterhin ist er Herausgeber von dem Online-Fachportal «InformatikPraxis» bei der WEKA Business Media AG.

MaLiWi IT

 zum Portrait

Zu diesem Artikel wurden noch keine Kommentare geschrieben. Wir freuen uns, wenn Sie den ersten Kommentar zu diesem Artikel verfassen.
 
Kommentar schreiben

Bitte Wert angeben!

Bitte Wert angeben!

Bitte Wert angeben! Bitte geben Sie eine gültige E-Mail-Adresse ein!

Bitte Wert angeben!

Bitte Wert angeben!

Bitte Wert angeben!

Bitte alle fett beschrifteten Pflichtfelder ausfüllen.
Zurücksetzen
 
Docker

Betriebssystem-Virtualisierung Altbekannt

Betriebssystem-Virtualisierung ist ja bereits ein alter Hut – es dürfte sich unter den Lesern und Leserinnen kaum jemand finden, der oder die nicht schon einmal mit VirtualBox, VMWare oder Parallels (um nur die Platzhirsche im Clientbereich zu nennen) eine Windows- oder Linux-Maschine erstellt, geklont oder sonst wie virtuell auf ihrem PC oder Mac betrieben hat.

Und umgekehrt gilt dasselbe: Windows virtualisiert Linux oder ein anderes Windows, Linux virtualisiert Linux oder Windows – inzwischen lassen sich sogar Mac-Systeme auf Mac oder Windows virtualisiert betreiben, welchen praktischen Nutzen auch immer so etwas haben könnte.

Die Virtualisierung ganzer Serversysteme ist ebenfalls schon lange gängige Praxis – und mit den Platzhirschen VMWare, Xen(Server), KVM und Hyper-V lassen sich inzwischen recht einfach ganze Serverfarmen auf wenigen «echten» Hardware-Servern betreiben.  

Was aber, wenn man nur einzelne Anwendungen virtualisieren will und nicht gleich einen gesamten Server? Hierzu sind findige Entwickler bereits vor Jahren auf die Idee gekommen, nicht ganze Server virtualisiert zu betreiben, sondern nur die Bereiche auf einem System, die zum Betrieb einer Software unbedingt benötigt werden. Dabei können die Anwendungen in mehreren solcherart voneinander abgetrennten Systemen auf dieselben Bestandteile des Wirtssystems zugreifen, ohne dass gleich eine ganze Serverumgebung aufwendig emuliert werden muss. Diese Idee der Container-Virtualisierung greift Docker auf – und während zur Zeit noch eine gewisse Monokultur herrscht, da Container-Virtualisierung nur unter Linuxsystemen möglich ist, wird Docker bald sogar auf Windows-Servern zur Verfügung stehen. Doch eines nach dem Anderen.

Wieso Container?

Docker beruht auf der Idee der Linux-Container, und das Prinzip dahinter ist rasch erklärt. Programme sind selten in einem autarken Ordner abgelegt, der sie vom Rest des sie umgebenden Betriebssystems abtrennt. Vielmehr benötigen sie für die ordnungsgemässe Funktion andere Programme, Systembestandteile, Bibliotheken – sie haben also bestimmte Abhängigkeiten. Das erschwert das Verteilen von Anwendungen auf unterschiedliche Systeme – wer bereits öfters verschiedene Versionen einer bestimmten Software auf diversen Betriebssystemvarianten installiert hat, wird das Problem kennen. Zudem veröffentlichen Entwickler ihre Anwendungen oftmals in unterschiedlichen Umgebungen, auf Test- und Produktivsystemen, was die Komplexität weiter steigert. Hier versprechen Software-Container Abhilfe.  

Ein Container kann dabei aus einer kompletten Runtime-Umgebung bestehen, also einer Anwendung «inklusive aller Abhängigkeiten, Bibliotheken und andere(n) 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» (www.tecchannel.de).  

Die Analogie der «Verpackung» von Anwendungen in Container zum Transportwesen liegt auf der Hand: Hier müssen Güter auf unterschiedlichen Wegen transportieren werden, wobei je nach Kombination von Gut und Transportmedium spezielle Bedingungen einzuhalten sind. Die Lösung hierfür besteht in genormten Containern, die sich gleichermassen für den Transport per Bahn, Schiff oder Flugzeug eignen und die gewünschten Waren von dem gewählten Transportmedium abstrahieren» (www.heise.de).

Dieses Prinzip «greift Docker auf: Statt die Anwendung direkt auf den Systemen einzurichten, packt man sie einschliesslich all ihrer Abhängigkeiten in einen Container, der sich anschliessend auf einheitlichem Weg verteilen und ausführen lässt» (zit. n. ebd.).  

Dabei handelt es sich bei Software-Containern eben nicht um virtuelle Maschinen, sondern um voneinander abgetrennte Umgebungen, die auf ein und demselben Betriebssystem(kern) betrieben werden. Der sorgfältigen Trennung der Prozesse, dem Rechtemanagement und so weiter kommt hierbei natürlich eine wichtige Rolle zu – aber genau diese wird durch Docker (und dessen Mitbewerber wie etwa rkt unter CoreOS) ausgefüllt.  

Festzuhalten wäre also, dass eine Container-Lösung wie Docker nicht auf virtuellen Maschinen beruht, sondern auf  (Linux-)Containern (LXC). Und ebenso wie bei virtualisierten Systemen gibt es natürlich auch hier Vor- und Nachteile.

Grundsätzlich erlauben Container einen sehr sparsamen und effizienten Umgang mit den Server-Ressourcen. Während ein Container Megabytes für den Betrieb einer Anwendung benötigt, verschlingt eine virtuelle Maschine eher Gigabytes; ein Hardware-Server kann also sehr viel mehr Container hosten als virtuelle Maschinen. Und während VMs zwar schneller starten als ihre Hardware-Pendants, benötigen sie immer noch Startzeiten im Minutenbereich. Ein Container hingegen ist in der Regel in Sekunden gestartet. Ob hingegen nun Container sicherer sind oder virtualisierte Server lässt sich nicht so definitiv beantworten. Virtuelle Maschinen stellen zwar innerhalb ihres «Biotops» die besser abgetrennten Systeme dar und versprechen dadurch eine höhere Sicherheit als die Container mit dem gemeinsamen Zugriff auf denselben Betriebssystemkern. Hingegen bringt die Virtualisierung eines ganzen Serversystems natürlich einen gewissen Overhead und somit potentielle Fehlerquellen und Angriffspunkte mit sich. Der grösste Vorteil der Linux-Container liegt also in dem sparsamen Umgang mit Ressourcen und einer kurzen Startzeit. Ein gewichtiger Nachteil ist vor allem die eher komplexe und aufwendige Konfiguration. Ausserdem lässt sich zum Beispiel ein Windows-System nicht in einem Linux-Container betreiben – hier würde also immer noch eine virtuelle Maschine benötigt. Docker lässt sich übrigens ohne Lizenzkosten herunterladen, da es unter der Apache-License 2.0 lizenziert ist.

Container in Windows Server 2016 mit Docker

Bisher mussten also Microsoft-Systeme bezüglich der Container, wie gesagt, sozusagen «draussen bleiben». Die quasi vor der Tür stehende Version des beliebten und weit verbreiteten Microsoft-Servers «Windows Server 2016» wird aber ebenfalls Server-Container beinhalten – dies kommt schon einer kleinen Revolution gleich. Bisher stand diese aus der Linux-Ecke stammende Technik eben auch nur für Linux-Derivate (Debian, Suse, Red Hat etc.) zur Verfügung. Dabei hat Microsoft nicht nur (in enger Zusammenarbeit mit den Docker-Entwicklern) die Dockertechnologie adaptiert – umgekehrt wird es tatsächlich sogar möglich sein, mit dem Docker-Client aus Redmond Windows- und Linux-Container zu verwalten. Ganz lange her scheinen inzwischen die Zeiten zu sein, in denen Microsoft noch in plakativen Zeitungsannoncen vor einer nachgerade krankhaften Mutierung eines Windows-Systems für den Fall gewarnt hatte, dass dieses all zu intensivem Kontakt mit dem bösen Open-Source-Linux ausgesetzt sei. Ganz im Gegenteil arbeiten die Entwickler bei Microsoft sogar eng mit den Docker-Entwicklern zusammen: «Bei der Docker-Einbindung in Windows Server 2016 handelt es sich also nicht um eine parallel entwickelte Technologie, sondern die Docker-Entwickler nutzen in Windows Server 2016 die gleiche Codebasis wie in Linux und erhalten Zugriff auf den notwendigen Windows-Code». (zit. n. www.zdnet.de)  

Die Unterstützung für Container-Virtualisierung wird auch tatsächlich erst mit Windows Server 2016 kommen – im aktuellen Windows Server 2012 (auch R2) ist diese Technologie noch nicht implementiert. Dann aber wird es wiederum auch keiner gesonderten «Container-Edition» des Windows-Servers bedürfen, um Serveranwendungen sicherer und cloudkompatibel zu machen – in jeder Windows Server 2016-Edition wird Docker enthalten sein, ebenso in vollständig installierten Servern als auch auf Core-Servern. Die kommende Generation des Windows-Servers wird die noch weiter reduzierten «Nano-Server» bringen, die Container nicht nur unterstützen, sondern sogar speziell darauf ausgelegt sein soll.  

Wer Freude am Experimentieren hat: Die Vorabversion Windows Server 2016 TP3 enthält bereits die Docker-Implementierung «Windows Server Container».

MaLiWi IT

Produkt-Empfehlungen

  • InformatikPraxis

    InformatikPraxis

    DIE ultimative Praxislösung für IT-Entscheider!

    ab CHF 168.00

  • Cloud-Computing

    Cloud-Computing

    Erfahren Sie welchen Nutzen Cloud-Computing Ihnen und Ihrem Unternehmen bringen kann.

    Mehr Infos

  • Die wichtigsten IT-Vertragsvorlagen

    Die wichtigsten IT-Vertragsvorlagen

    Über 100 IT-Vertragsvorlagen, Checklisten und Arbeitshilfen auf praktischem USB-Stick.

    Mehr Infos

Seminar-Empfehlungen

  • Praxis-Seminar, 1 Tag, ZWB, Zürich

    Selbst- und Zeitmanagement für Führungskräfte

    Sich selbst erfolgreich und optimal organisieren

    Nächster Termin: 06. November 2018

    mehr Infos

  • Praxis-Seminar, 1 Tag, ZWB, Zürich

    IT-Verträge entwerfen und verhandeln

    Rechtssicherheit bei IT-Projekten, Outsourcing und Cloud Computing

    Nächster Termin: 22. November 2018

    mehr Infos

Um unsere Website laufend zu verbessern, verwenden wir Cookies. Durch die Nutzung dieser Website stimmen Sie der Verwendung von Cookies zu. Mehr Infos