Docker für Dummies
Docker für Dummies
Bibliografische Information der Deutschen Nationalbibliothek
Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie; detaillierte bibliografische Daten sind im Internet über http://dnb.d-nb.de abrufbar.
© 2019 WILEY-VCH Verlag GmbH & Co. KGaA, Weinheim
Wiley, the Wiley logo, Für Dummies, the Dummies Man logo, and related trademarks and trade dress are trademarks or registered trademarks of John Wiley & Sons, Inc. and/or its affiliates, in the United States and other countries. Used by permission.
Wiley, die Bezeichnung »Für Dummies«, das Dummies-Mann-Logo und darauf bezogene Gestaltungen sind Marken oder eingetragene Marken von John Wiley & Sons, Inc., USA, Deutschland und in anderen Ländern.
Das vorliegende Werk wurde sorgfältig erarbeitet. Dennoch übernehmen Autoren und Verlag für die Richtigkeit von Angaben, Hinweisen und Ratschlägen sowie eventuelle Druckfehler keine Haftung.
Print ISBN: 978-3-527-71607-4
ePub ISBN: 978-3-527-82218-8
Coverfoto: DHoffmannPhotography – stock.adobe.com
Korrektur: Claudia Lötschert, Neuss
Dr. Benjamin Kettner ist Mitgründer und CTO der ML!PA Consulting GmbH. Er promovierte im Jahr 2012 an der Freien Universität Berlin in angewandter Mathematik. Zurzeit seiner Promotion war er Mitglied des DFG Forschungszentrums Matheon – Mathematik für Schlüsseltechnologien – und Mitglied der Arbeitsgruppe Computational Nano Optics am Zuse Institut Berlin.
Während der Promotion und des Studiums beschäftigte er sich mit Software-Entwicklung und Programmierung sowie Datenbanken und Datenmodellen. Nach der Promotion arbeitete er als Berater bei einem Microsoft BI-Partner, wo er technischer Projektleiter war und außerdem den Bereich Forschung und Entwicklung leitete und als Software-Architekt tätig war.
Im Jahr 2015 gründete Benjamin Kettner die ML!PA Consulting GmbH, einen Microsoft-Partner mit Schwerpunkten in den Bereichen Advanced Analytics, Internet der Dinge und Cloud-Lösungen. Dort ist er als CTO und Software-Architekt tätig und konzipiert, entwickelt und gestaltet Kundenlösungen. Die ML!PA Consulting GmbH wurde 2017 von Microsoft als »Partner of the Year Award Finalist« im Bereich »Internet der Dinge« ausgezeichnet.
Dr. Benjamin Kettner ist in der Microsoft Data Plattform Community aktiv, leitet dort die Regionalgruppe Berlin des PASS Deutschland e. V. und tritt häufig als Autor von Blogbeiträgen und wissenschaftlichen Artikeln sowie als Sprecher bei technischen Veranstaltungen auf.
In seiner Freizeit macht er in Metal-Bands Krach (Lieferant für die tiefen Töne), hört Musik und fachsimpelt darüber, fährt auf Konzerte und Festivals oder spielt mit Pia.
Frank Geisler ist geschäftsführender Gesellschafter der GDS Business Intelligence GmbH und beschäftigt sich in seinem Unternehmen mit dem Microsoft BI Stack, Azure, Künstlicher Intelligenz und Machine Learning. Dabei legt er als MCSE – Business Intelligence und MCSE – Data Plattform sowohl Wert auf die Administration als auch auf die Entwicklung von BI-Systemen und kennt den SQL-Server seit der Version 6.5 und SharePoint seit dem Projekt »Tahoe«.
Frank hält des Öfteren Vorträge auf nationalen und internationalen Konferenzen, an Universitäten oder bei Usergroup-Treffen und schreibt regelmäßig Artikel für verschiedene deutsche Fachzeitschriften. Außerdem hat er einige Bücher veröffentlicht, unter anderem hat er ein grundlegendes Buch zum Thema »Datenbanken« geschrieben.
Er gehört zu den Gründungsmitgliedern des PASS Deutschland e. V. und ist zusammen mit Gabi Münster und Klaus Höltgen Chapter Leader der Regionalgruppe Ruhrgebiet. Für seine Community Arbeit ist Frank im Juli 2014 zum Microsoft MVP SQL Server ernannt worden und hält den Titel seitdem.
In seiner Freizeit beschäftigt er sich gerne mit seiner Tochter Elisa (fast 2), hört Heavy Metal, guckt Filme, die außer ihm mal wieder niemand gesehen hat, und spielt Xbox – auch mit Ben. Außerdem betreibt er zusammen mit Tillmann Eitelberg und Ben Weissman den Podcast »Please Talk Data To Me« (http://www.pleasetalkdatatome.de
)
Ben Kettner: Freya (hab weiter Kraft), Pia (bleib weiter froh) und meiner Familie und Freunden, besonders Frank (dass wir das Projekt gemeinsam gestemmt haben) und der #SQLFamily.
Frank Geisler: Natürlich möchte ich mich hier an erster Stelle bei Ben bedanken. Hätte er nicht letztes Jahr auf dem SQL Saturday Rheinland gesagt, dass er das Dummies-Buch zu Docker mit mir schreiben will, hätte es dieses Buch wahrscheinlich nicht gegeben, oder ich wäre immer noch nicht fertig. Weiter möchte ich Frau Baulig für das Lektorat und dem Fachlektor Herrn Schlede für ihre wertvollen Hinweise danken. Diese Hinweise haben uns geholfen, das Buch weiter zu verbessern. Auch der #SQLFamily möchte ich für die fortwährende Unterstützung danken. Zum Schluss möchte ich auch noch Aurelia danken, die eine wundervolle Mutter für meine kleine Tochter Elisa ist. Ihr rockt!
Sicherlich haben Sie schon einiges über Docker und die Container-Technologie gehört und möglicherweise auch schon den kleinen blauen Wal Moby gesehen, der immer öfter auf Webseiten auftaucht. Docker ist in aller Munde, und dieses Buch gibt Ihnen eine praxisrelevante Einführung in dieses spannende und wichtige Thema. Aber bevor es richtig losgeht, lassen Sie uns erst mal dort anfangen, wo es sinnvoll ist – am Anfang. In einer immer schnelllebigeren Welt, in der eine Technologie-Revolution die nächste jagt – warum sollten Sie sich da jetzt auch noch mit Docker auseinandersetzen? Diese Fragestellung versuchen wir auf den nächsten Seiten zu klären. Im Rest des Buchs werden wir Sie dann auf eine Reise mitnehmen, bei der Sie sich am Strand die Füße nass machen, bevor es dann in immer tiefere Gewässer geht – dahin, wo sich der Wal am wohlsten fühlt.
Docker stellt die nächste große Revolution oder den nächsten großen Umbruch in der IT-Infrastruktur und bei den IT-Prozessen dar. Einen Umbruch, wie er so nur alle zehn Jahre vorkommt. Ein solcher Umbruch ersetzt die vorhandenen Strukturen durch etwas grundsätzlich Neues.
Wenn man sich die Geschichte der IT anschaut, dann gab es den ersten großen Umbruch in den 1990er-Jahren des vorigen Jahrhunderts, bei dem PCs und lokale Netzwerke die bis dahin marktbeherrschenden Großrechner abgelöst haben. In den 2000er-Jahren fand dann ein Übergang von physischen Servern zu virtuellen Servern statt: Es zeigte sich, dass es viel ressourcenschonender und effektiver war, Server nicht direkt auf der zur Verfügung stehenden Hardware zu betreiben, sondern diese zu virtualisieren. In den 2010er-Jahren begann dann der Aufstieg der Cloud-Anbieter, und es entwickelte sich ein Trend weg vom eigenen Rechenzentrum hin zu Cloud-Anbietern und Cloud-Diensten. Und nun, sehr geehrter Leser, befinden wir uns wieder an so einem Wendepunkt – dem Wendepunkt weg von Host-Serversystemen hin zu Containern, zu serverlosen Funktionen als Dienst. Und das Beste dabei ist, Sie sind mittendrin. Die Verlagerung von Rechenleistung weg von virtuellen Servern hin zu Containern ist im vollen Gange, und bald wird es ganz normal sein, wenn Sie Ihre Anwendungen in Containern betreiben.
Wie bei all diesen Umbrüchen ist der schwierigste und aufwendigste Teil die Migration aus der alten in die neue Welt. Es gibt neue Tools, neue Workflows und neue Terminologien. Damit Sie sich in der neuen Welt zurechtfinden, haben wir dieses Buch geschrieben.
Es gibt aber einen Lichtblick bei der Migration von Serversystemen hin zu Docker-Containern. Docker ist eine Technologie, die sich auf die Migration von der alten hin zur neuen Welt fokussiert hat. Schaut man sich alle anderen Technologie-Umbrüche im Bereich des Server Computings an, so stellt man fest, dass die Hauptzielgruppe der neuen Technologie stets die Systemadministratoren waren. Diese mussten die Systeme von der einen in die andere Welt umziehen, und die Entwicklung der Software, die auf den neuen Systemen ausgeführt werden sollte, war nachgelagert.
Mit Docker wird das alles aber anders. Docker ist sowohl für Systemadministratoren wie auch für Entwickler entwickelt worden, die Hand in Hand in die schöne neue Welt aufbrechen können.
Container sind die am schnellsten wachsende Technologie, die Cloud-Computing unterstützt. Docker ist eine Technologie, die hervorragend in die heutige Zeit passt, denn bei Docker geht es rein um die Geschwindigkeit. Mit Docker kann man:
Oft sind wir heute bei modernen IT-Systemen in der sogenannten Matrix aus der Hölle gefangen (siehe Abbildung 0.1).
Abbildung 0.1: Matrix aus der Hölle
Wir haben sehr viele unterschiedliche Systeme, die in der Matrix in den Spalten abgebildet sind, und sehr viele unterschiedliche Schichten in unserer Software-Architektur. Die Matrix verdeutlicht die Komplexität, die sich in modernen IT-Systemen und modernen Software-Architekturen verbirgt. Auch mit der besten Dokumentation ist es sehr schwierig, herauszufinden, was wo in welcher Version läuft und welche Abhängigkeiten die Software von welchen anderen Komponenten besitzt.
Container können dieses Chaos in eine konsistente Struktur verwandeln, indem man die Software und die Komponenten, von denen diese abhängig ist, in einen Container verpackt. Die Software selbst ist im Container schon installiert; das bedeutet, dass sie nicht mehr aufwendig mit all ihren Abhängigkeiten installiert werden muss. So kann die Software unabhängig vom Setup verteilt werden. Außerdem ist Docker systemunabhängig – ob der Container nun auf einem Windows-System, einem Linux-System, im Rechenzentrum, in der Cloud, auf einem IoT-Gerät oder gar einem Mac läuft, spielt keine Rolle. Hierdurch werden viele Probleme, mit denen sich die IT Tag für Tag herumschlägt, erheblich vereinfacht.
In den letzten 50 Jahren wurde sehr viel Software programmiert und bereitgestellt. Software, die es irgendwo da draußen immer noch gibt, und diese Software muss gewartet werden. Wenn man die Zeit eines Systemadministrators analysiert, stellt man fest, dass sich dieser ca. 8 % seiner Zeit mit der Wartung von Software beschäftigt. Er führt dabei die folgenden Aufgaben durch
Das sind alles Aufgaben, die niemand gerne macht, aber diese Aufgaben müssen ja trotzdem erledigt werden. Insgesamt führt diese Auslastung dazu, dass für die wichtigste Aufgabe gar keine Zeit bleibt, nämlich für Weiterentwicklung und Innovation. Und genau hier setzt Docker an. Durch die Container-Technologie wird der Aufwand für die Standard-Aufgaben eines Systemadministrators minimiert und Zeit für andere Dinge geschaffen. Docker ist ein weiterer Schritt hin zur »Wegwerf-IT«. Während man die mühsam eingerichteten virtuellen Server hegt und pflegt wie lieb gewonnene Haustiere, löscht man einen Docker-Container einfach, wenn dieser fehlerhaft ist oder ein Update benötigt, und erstellt einfach einen neuen.
Ein großer Indikator für den Erfolg von Docker ist, dass viele große Unternehmen inzwischen auch auf die Container-Technologie setzen. So hat Paypal beispielsweise 700 Applikationen in Container gepackt – und zwar ohne irgendwelche Änderungen am Code durchgeführt zu haben.
MetLife – ein großer amerikanischer Versicherungskonzern – konnte durch Docker viel Geld und Zeit gespart werden, da man weniger Betriebssysteme benötigte und gleichzeitig mehr Anwendungen bereitstellen konnte.
Dieses Buch sollte jeder lesen – wirklich jeder, der sich in seinem beruflichen oder privaten Leben mit IT auseinandersetzt. Die Umwälzungen, die Docker mit sich bringt, sind so grundlegend, dass man schnell den Anschluss verlieren kann, wenn man nicht zumindest ein Grundverständnis dieser großartigen neuen Technologie hat. Docker ändert die Art und Weise, wie wir Systeme entwickeln, wie wir Systeme bereitstellen und wie wir Systeme warten, grundlegend.
Da Docker eine grundlegende Veränderung in der IT-Infrastruktur und ein Paradigmenwechsel ist, sollte man sich mit Docker auseinandersetzen, egal ob man jemand ist, der IT-Systeme verwaltet, ein Systemadministrator, ein Entwickler oder jemand, der sich im Unternehmen um Tests oder Builds kümmert. Wissen über Docker ist ein Wissensvorsprung, den Sie entweder nutzen können, wenn Sie eine neue Stelle suchen oder wenn sich Ihr Unternehmen mit Docker beschäftigt. Das »wenn« im letzten Satz ist zeitlich gemeint und nicht als Synonym zu »falls«, denn eins ist klar: Früher oder später kommt kein Unternehmen um Docker herum.
Dieses Buch ist als Einführung in Docker und die Container-Technologie gedacht und kann an einem Stück von vorne bis hinten durchgearbeitet werden. Natürlich können Sie jederzeit Kapitel überspringen, in denen Themen behandelt werden, die nicht interessant für Sie sind. So können Sie beispielsweise das Kapitel über die Installation von Docker auf einem Linux-Rechner überspringen, wenn Sie einen Mac besitzen. Nach hinten hin werden die Themen immer anspruchsvoller, sodass Sie dort mehr Wissen über Docker benötigen als weiter vorne.
Da Sie sich die Einführung bis hierhin durchgelesen haben, gehen wir davon aus, dass Sie ein Interesse an Docker und der Container-Technologie haben. Als wir uns zusammengesetzt haben, um dieses Buch zu schreiben, haben wir uns natürlich viele Gedanken gemacht, wer Sie sind, werter Leser, der sich dieses Buch kauft und durchliest. Dabei haben wir die folgenden möglichen Lesergruppen identifiziert:
docker-compose
. Sie können Dockerfiles mit in Ihren Build-Prozess einbauen und so dafür sorgen, dass nach Ihrem Build automatisch ein Image mit einer neuen Version Ihrer Anwendung und allen benötigten Komponenten erstellt wird. Über docker-compose
können Sie schnell komplexe Umgebungen bereitstellen.Dieses Buch gruppiert zusammenhängende Docker-Themen in verschiedene Teile.
Dieser Teil ist eine Einführung in Docker, mit der Sie sich langsam mit der Technologie vertraut machen können. Hier lernen Sie:
Außerdem bauen Sie hier Ihren ersten Container
Nachdem Sie in Teil I die Grundlagen von Docker gelernt haben, geht es im Teil um fortgeschrittene Techniken. Im Einzelnen lernen Sie:
In Teil I und Teil II sind wir davon ausgegangen, dass Docker lokal auf Ihrem Rechner ausgeführt wird. Möchten Sie Docker aber in größeren Umgebungen ausfallsicher und skalierbar nutzen, kommen Sie um einen Docker-Cluster nicht herum. Teil III geht auf den Aufbau von Clustern ein. Hier lernen Sie:
Natürlich können Sie Docker in Ihrem eigenen Netzwerk oder Rechenzentrum zur Verfügung stellen. Möchten Sie aber die unendlichen Ressourcen der Cloud nutzen, sind Sie in diesem Teil richtig. Hier lernen Sie:
Für diesen Teil haben wir uns einige Szenarien vorgenommen, wie sie so oder so ähnlich in der Praxis vorkommen können. Die Kapitel sind richtige »Mitmach-Kapitel« geworden. Hier lernen Sie:
Kein Dummies-Buch wäre vollständig ohne den Top-Ten-Teil. Hier finden Sie
Damit Sie dieses Buch einfacher lesen und leichter benutzen können, machen Symbole auf bestimmte Informationen aufmerksam.
Wenn Sie sich ganz neu mit Docker beschäftigen, empfehlen wir Ihnen, zunächst Teil I durchzuarbeiten. Als Ergebnis erhalten Sie eine Labor-Umgebung, in der Sie mit Ihren Docker-Experimenten starten können, und ein grundlegendes Verständnis von Docker. Haben Sie bereits erste Erfahrungen, so können Sie auch mit den anderen Teilen beginnen und querlesen.
Ach ja – was wir Ihnen auch dringend empfehlen, ist, die Beispiele auszuprobieren und nachzubauen. Den Code für die Beispiele gibt es gesammelt auf der Wiley-VCH-Homepage unter https://www.wiley-vch.de/ISBN9783527716074
und auch in einem GitHub-Repository, das Sie unter https://github.com/docker-fur-dummies
finden. Bei Docker ist es wie beim Schwimmen – Sie lernen Docker nicht, indem Sie am Strand stehen und einem Wal beim Schwimmen zuschauen; Sie lernen Docker nur dann, wenn Sie sich selbst in die Fluten wagen und selbst Schwimmbewegungen machen.
So, und nun genug der einführenden Worte. Lassen Sie sich von unserer Docker-Euphorie anstecken und tauchen Sie ein in den großen weiten Docker-Ozean, da wo Moby Dock lebt.