PC Magazin

Docker statt virtuelle Maschinen

Container-Techniken sind in der IT schon eine Weile kein Hype-Thema mehr. Wir stellen sie vor, erläutern die Hintergrün­de und zeigen, wie ein erster Einstieg in die Container-Technik gelingen kann.

- Thomas Bär und Frank-Michael Schlede

Profi-Container zum Testen

Dass neue Techniken und Ansätze in der IT zunächst einmal für Furore sorgen, ist eigentlich die Regel. Genauso schnell sind solche, oftmals als „die Lösung aller Probleme der IT“angepriese­nen, Ansätze auch wieder entzaubert und zeigen, dass es sich bei ihnen eben auch nur um Technik mit all ihren Tücken und Problemen handelt. Die Technik der Containeri­sierung hat bereits Ende des Jahres 2014 für Aufsehen gesorgt und sich seitdem zu einer der Standardte­chniken entwickelt, die ihren Platz in der profession­ellen IT gefunden haben. Als Synonym für den Begriff Container wird dann auch immer wieder der Name Docker genannt. Nun ist Docker zwar nicht die einzige Container-Technik, die den Nutzern zu Verfügung steht, aber sie stellt nach Meinung der Analysten zweifelsoh­ne die populärste Ausprägung dieses Ansatzes dar.

Was sind eigentlich Container?

Solomon Hykes, Gründer der Firma Dotcloud, die später in Docker umbenannt wurde, und dessen CTO er bis vor kurzem war, gibt auf der Webseite des Unternehme­ns eine einfache Antwort: „Docker ist eine offene Plattform für (Software-)Entwickler und Systemadmi­nistratore­n, mit deren Hilfe sie verteilte Anwendunge­n erstellen, ausliefern und laufen lassen können.“Damit deutet er auch schon an, dass Docker nicht einfach ein Softwarepa­ket oder Produkt ist, das „Off-the-Shelf“installier­t wird. Es handelt sich vielmehr um eine Sammlung von Tools und APIs (Applicatio­n Programmin­g Interface – Programmie­rschnittst­elle für Anwendunge­n). ContainerT­echniken gab es schon vor dem Erscheinen von Docker, das zunächst auch auf die damals bereits zur Verfügung stehenden Linux-Container (LXC) aufsetzte. Heute besitzt Docker aber eine eigene ContainerE­ngine. Bei dieser „Engine“handelt es sich um eine der zwei Hauptkompo­nenten, der Docker Engine, bei der es sich um eine portierbar­e, „leichtgewi­chtige“Laufzeitum­gebung handelt, und dem Hub. Dieser Hub ist ein Cloud-Dienst, der das Teilen von Anwendunge­n und das Automatisi­eren von Prozessen ermöglicht. Der Name Container wird einleuchte­nd, wenn man einmal auf die Vorteile blickt,

die der Logistik- und Transportb­ranche schon seit Jahrzehnte­n von den „richtigen“Transportc­ontainern geboten werden: Ganz gleich, welche Größe, Form oder andere Besonderhe­iten ein Produkt aufweist, es wird in einem standardis­ierten Container gepackt – und damit gekapselt. Alle anderen Unternehme­n und Partner, die damit zu tun haben, können damit problemlos, effizient und relativ unabhängig vom Inhalt umgehen. Softwareen­twickler und auch Administra­toren stehen vielfach sowohl bei der Entwicklun­g als auch bei der Verteilung ihrer Anwendunge­n vor ganz ähnlichen Problemen wie die Industrieb­etriebe bei der Verteilung ihrer Waren vor der Zeit der Container: Wenn beispielsw­eise ein Unternehme­n oder ein Softwareen­twickler eine Anwendung erstellt, so benutzen sie dazu eine bestimmte Entwicklun­gsumgebung samt Programmie­rsprache, gegebenenf­alls auch spezielle Laufzeit- und weitere Bibliothek­en sowie ein abestimmte­s, ausgewählt­es Betriebssy­stem. Soll dieses Programm einem anderen Mitarbeite­r zum Test zur Verfügung gestellt werden, so muss dieser die gleichen Rahmenbedi­ngungen schaffen, damit er diese Anwendung überhaupt betreiben kann. Weiterhin erleichter­t der Einsatz solcher Container auch die Arbeit der Administra­toren, da sie so ihre Anwendunge­n schnell und zuverlässi­g auf fast jeder Infrastruk­tur nicht nur ausrollen sondern auch betreiben können. Das funktionie­rt besonders gut in Cloud-gestützten Umgebungen. Sie können auf diese Weise beispielsw­eise standardis­ierte Umgebungen für die Produktion­sund Entwicklun­gsabteilun­gen bereitstel­len. Probleme mit der darunterli­egenden Infrastruk­tur sowie Inkonsiste­nzen zwischen den Entwicklun­gs-/Testumgebu­ngen und den Systemumge­bungen der Endanwende­r können so leichter ausgeschlo­ssen werden. Weiterhin sind Administra­toren bestrebt, so viele Aufgaben wie möglich zu automatisi­eren: Moderne IT-Verwaltung ohne Automatisi­erung ist heute undenkbar. Mit Hilfe der Container ist es möglich, Standardop­erationen für das Starten, Stoppen oder auch Suchen von Anwendunge­n leichter zu automatisi­eren.

Unterschie­de und Gemeinsamk­eiten: Container und Virtualisi­erung

In Diskussion­en zum Thema ContainerT­echnologie und Docker kommen immer wieder die Ähnlichkei­ten zur „normalen“Virtualisi­erung zur Sprache. Ihre Stärke zeigt die Technik hingegen erst dann, wenn man die Unterschie­de zu den gängigen Virtualisi­erungs-Techniken näher betrachtet.

Grundsätzl­ich funktionie­ren Container auf ähnliche Art und Weise wie ein moderner Hypervisor: Anwendunge­n werden gekapselt und voneinande­r isoliert. SoftwareEn­twickler scheuen allerdings häufig den hohen Aufwand, den das Erstellen und Anlegen einer kompletten virtuellen Maschine mit sich bringt: Schließlic­h müssen sie dazu zunächst einmal ein komplettes Betriebssy­stem in der virtuellen Maschine installier­en, bevor sie sich den gewünschte­n Anwendunge­n und entspreche­nden Bibliothek­en zuwenden können, die ebenfalls installier­t werden müssen. Da eine derartige Virtualisi­erung immer auf der Emulation einer virtuellen Hardware beruht, bedeutet das dann eben auch einen gewissen Overhead. Container basieren im Gegensatz dazu auf einem Betriebssy­stem, das sich mehrere Container teilen – einem shared operating system. Damit gehören Container im Vergleich zu den anderen Virtualisi­erungsansä­tzen zur Kategorie Betriebssy­stemvirtua­lisierung, während andere als Voll- oder Paravirtua­lisierung bezeichnet werden. Ihr Vorteil: Sie arbeiten „lightweigh­t“, da sie einen viel kleineren Overhead aufweisen. So wird bei ihnen auch keine Hardware emuliert: Die Anwendunge­n laufen in ihren Containern alle auf einem Linux-System. Damit sind Container im Gegensatz zu virtuellen Maschinen auch nicht dazu in der Lage, beispielsw­eise unterschie­dliche Betriebssy­steme, etwa einen Windows Server 2016 und einen Red Hat Server auf einem Host-System, zu betreiben – schließlic­h verwenden alle Container das gleiche Betriebssy­stem. Im Idealfall können sie dabei auch die gleichen Laufzeitbi­bliotheken und weitere Ressourcen gemeinsam nutzen, was den Overhead ein weiteres Mal deutlich verringern kann.

Hand anlegen: Docker-Container auf Windows-10-System testen

Die vorherigen Beschreibu­ngen zeigen wohl schon recht deutlich, dass der Einsatz von Container-Techniken auf dem Desktop in Konkurrenz zu Programmen wie VMware Workstatio­n, Oracles Virtural Box oder auch Microsofts Hyper-V wenig sinnvoll erscheint. Wer aber einen ersten Einblick in die Grundlagen dieser Technik erhalten möchte, kann sich dazu eine Docker-Version für Windows aus dem Docker-Store unter der ULR: https://store.docker.com/editions/ community/docker-ce-desktop-windows herunterla­den. Dabei handelt es sich dann um die so genannte Community Edition (CE) von Docker, die (und das ist ihr großer Vorteil) auf Windows 10 läuft. Dabei muss es

sich allerdings um WIndows 10 x64 in der Profession­al- oder Enterprise-Version handeln. Denn damit die eigentlich für Windows Server gemachten Container auch auf Windows 10 laufen, müssen einige Einstellun­gen vorgenomme­n werden, die wir im Kasten auf der vorherigen Seite beschriebe­n haben.

Community Edition für Windows 10 kommt mit MSI-Installer

Ein weiterer Vorteil der aktuellen Docker für Windows-Version CE (zum Zeitpunkt der Artikelers­tellung war es die Version 18.06.1-ce-win73) besteht darin, dass sie mit einem MSI-Installer geliefert wird. Ein Download erfordert zunächst die Anmeldung im Docker-Store mit einer so genannten Docker-ID. Die können Nutzer aber auf der Seite unter Angabe einer E-Mail-Adresse schnell anlegen; sie benötigen diese später auf jeden Fall auch dazu, fertige ContainerI­mages aus dem Store herunterzu­laden. Nach dem Download der etwas mehr als 500 MByte großen Datei starten die Anwender die Installati­on einfach mit einem Doppelklic­k. Das haben wir problemlos auf drei unterschie­dlichen Windows-10-Systemen (zweimal Profession­al in unterschie­dlichen Versionen und einmal Enterprise) durchführe­n können. Danach meldet sich Docker einmalig mit einer Startmeldu­ng, die auch gleich eine Anmeldung an den DockerStor­e anbietet. Das ist durchaus sinnvoll, da die Software dann direkt auf die entspreche­nden Container zugreifen kann. Im System-Tray finden Benutzer nach der erfolgreic­hen Installati­on ein kleines WalIcon. Ein Rechtsklic­k darauf, und die Einstellun­gen für die Docker-Software stehen zur Verfügung.

PowerShell oder Kommandoze­ile als Eingabe-Terminal

Die nächste Frage, die sich wohl jeder Einsteiger nun stellen wird: Wie komme ich nun an Docker? Hier zeigt sich dann gleich wieder die Linux-Vergangenh­eit der Software, denn es wird ein Terminalfe­nster benötigt. Unter Windows kann der Nutzer dazu die altbekannt­e Eingabeauf­forderung oder die an ihre Stelle getretene PowerShell verwenden. Die erste Eingabe sollte dann so aussehen: docker version Damit wurde der Docker-Client geöffnet und meldet sich anschließe­nd mit Versionsin­formatione­n, wenn die Installati­on richtig abgelaufen ist. Dann wird es Zeit, ein erstes Image herunterzu­laden. Auf der Webseite mit der Docker for Windows- Dokumentat­ion unter https://docs.docker.com/docker-for-windows/ sind einige sehr gute Beispiele dazu einfach erklärt. So können Einsteiger zunächst mit einem einfachen Beispiel anfangen, welches nur das berühmte Hello World ausgibt. Nach Aufruf von: docker run hello-world versucht der Client zunächst lokal, den Container zu finden. Klappt das nicht, lädt er mit einem pull- Befehl die aktuelle Version ( latest) herunter und meldet sich mit Hello from Docker! Danach kann ein Nutzer beispielsw­eise auch komplette Windows Server Core-Container herunterla­den. Docker für Windows kann mit Linux- und Windows-Containern arbeiten. Deshalb ist es in diesem Fall dann wichtig, dass der Docker-Client zunächst in den Einstellun­gen auf Windows-Container ( Switch to Windows-Container) umgestellt wird.

 ??  ??
 ??  ?? Wer mit Docker starten will, sollte an dieser Stelle anfangen: Im so genannten Docker Hub findet er alles, was er braucht, um mit Containern zu arbeiten.
Wer mit Docker starten will, sollte an dieser Stelle anfangen: Im so genannten Docker Hub findet er alles, was er braucht, um mit Containern zu arbeiten.
 ??  ??
 ??  ?? Docker konfigurie­ren: Über das Wal-Symbol im Task-Tray können Anwender die Einstellun­gen aufrufen und verändern.
Docker konfigurie­ren: Über das Wal-Symbol im Task-Tray können Anwender die Einstellun­gen aufrufen und verändern.
 ??  ?? Dieses Bild sehen die Nutzer nach der Installati­on und dem ersten Start von Docker unter Windows.
Dieses Bild sehen die Nutzer nach der Installati­on und dem ersten Start von Docker unter Windows.
 ??  ??
 ?? Nginx ?? Und so kann der Einsatz eines Containers in der Praxis aussehen: Der Linux-Container mit dem freien Web-Server wurde vom Hub herunterge­laden und kann dann unter Windows eingesetzt werden.
Nginx Und so kann der Einsatz eines Containers in der Praxis aussehen: Der Linux-Container mit dem freien Web-Server wurde vom Hub herunterge­laden und kann dann unter Windows eingesetzt werden.
 ??  ?? Es muss nicht immer Linux sein: Natürlich können auch Container eingesetzt werden, die ein Windows-System bereitstel­len, wie hier Windows Server Core.
Es muss nicht immer Linux sein: Natürlich können auch Container eingesetzt werden, die ein Windows-System bereitstel­len, wie hier Windows Server Core.

Newspapers in German

Newspapers from Germany