cover.eps

Docker für Dummies

Schummelseite

Title page image

Über die Autoren

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)

Danksagung der Autoren

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!

Einführung

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.

Warum ist es wichtig, sich jetzt mit Docker zu beschäftigen?

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:

  • schneller entwickeln
  • schneller Builds ausführen
  • schneller testen
  • schneller Systeme bereitstellen
  • schneller Systeme aktualisieren
  • schnell Systeme wiederherstellen

Oft sind wir heute bei modernen IT-Systemen in der sogenannten Matrix aus der Hölle gefangen (siehe Abbildung 0.1).

image

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

  • Updates einspielen
  • Systeme am Laufen halten
  • Probleme beheben
  • Fehler suchen
  • Backups erstellen

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.

images Ein wichtiger Pluspunkt von Docker ist, dass man Anwendungen nicht neu schreiben muss, um sie in einem Docker-Container laufen zu lassen. Es handelt sich einfach um einen anderen Weg, wie man Software paketiert und zur Verfügung stellt.

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.

Wer dieses Buch lesen sollte

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.

images Es gibt eine große Community, die sich mit der Docker-Technologie auseinandersetzt. In jedem Jahr wird in dem Monat, in dem Docker gestartet wurde, eine große weltweite Party mit Kuchen und Workshops gefeiert. Diese Partys sind eine gute Gelegenheit, andere Leute kennenzulernen, die sich mit der Container-Technologie beschäftigen. Schauen Sie einfach mal unter https://www.meetup.com/de-DE/ nach, ob es ein Docker-Meetup in Ihrer Nähe gibt.

Was Sie nicht lesen müssen

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.

Törichte Annahmen über den Leser

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:

  • Sie sind Systemadministrator und möchten wissen, was es mit Docker auf sich hat. Sie haben schon viel über Docker gehört, wissen, dass Docker im Vergleich mit virtuellen Maschinen einige Vorteile hat, und möchten nun tiefer in diese spannende Technologie einsteigen. Dann ist dieses Buch genau das richtige für Sie, da wir zunächst das technische Grundwissen schaffen, das Sie für die Docker-Technologie benötigen. Danach üben Sie den Umgang mit Docker anhand zahlreicher praktischer Beispiele. Aus unserer Sicht ist es für Sie wichtig, sich mit der Erstellung eigener Images zu beschäftigen, weil diese die Grundlage für die von Ihnen bereitgestellten Container darstellen. Außerdem sind die Kapitel 19 und 20 über Kubernetes und Docker Swarm wichtig, weil diese Ihnen zeigen, wie man Docker-Container in einer Enterprise-Umgebung bereitstellt. Und natürlich besprechen wir auch Docker in der Cloud, damit Sie Docker-Umgebungen auch hier zur Verfügung stellen können.
  • Sie sind Entwickler und möchten auf Basis von Docker Entwicklungs- und Testumgebungen aufbauen. Auch in diesem Fall empfehlen wir Ihnen, sich zunächst mit den Grundlagen zu beschäftigen. Danach können Sie sich die Kapitel 21 bis 24 ansehen, in denen wir konkrete Umgebungen mit Docker aufbauen. Was für Sie auch sehr interessant ist, sind die Kapitel 8 und 9 über Dockerfiles und 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.
  • Sie sind IT-Entscheider und möchten einen Überblick über die Technologie bekommen. Auch in diesem Fall ist dies das richtige Buch für Sie. Nach der Einführung in die Technologie finden Sie Kapitel, wie beispielsweise Kapitel 15 über Microservices, die Ihnen einen Überblick über Architekturen geben, in denen Docker-Container eingesetzt werden können. Außerdem zeigen wir Ihnen, wie man Docker-Container ohne großen Aufwand an Hard- und Software schnell in der Cloud zur Verfügung stellen kann.
  • Sie haben allgemein Interesse an neuen Technologien. In diesem Fall legen Sie einfach mal los. In der Zeit, in der wir uns jetzt mit Docker beschäftigt haben, ist uns aufgefallen, dass Docker eine sehr gut durchdachte Technologie ist und es wirklich viel Spaß macht, sich damit zu beschäftigen und Dinge einfach mal auszuprobieren. Als besonderes Schmankerl zeigen wir Ihnen weiter hinten im Buch in Kapitel 26, wie Sie einen Docker-Container auf einem Raspberry Pi zum Laufen bekommen, sodass Sie hier sogar einen kleinen Bastelteil haben.

Wie dieses Buch aufgebaut ist

Dieses Buch gruppiert zusammenhängende Docker-Themen in verschiedene Teile.

Teil I: Von Containern, Fenstern, Äpfeln und Pinguinen – Eine Einführung in Docker

Dieser Teil ist eine Einführung in Docker, mit der Sie sich langsam mit der Technologie vertraut machen können. Hier lernen Sie:

  • Die Docker-Terminologie: Was ist ein Container, was ein Container Host, was ist ein Image, was der Docker Hub?
  • Wie die Container-Technologie funktioniert
  • Wie man Docker auf Windows, Linux oder einem Mac installiert
  • Nützliche Software kennen, die bei der Arbeit mit Docker hilft

Außerdem bauen Sie hier Ihren ersten Container

Teil II: Abtauchen in die Welt des Wals – Fortgeschrittene Techniken

Nachdem Sie in Teil I die Grundlagen von Docker gelernt haben, geht es im Teil um fortgeschrittene Techniken. Im Einzelnen lernen Sie:

  • Die Verwendung von Docker Hub
  • Dockerfiles schreiben
  • Komplexe Umgebungen mit Docker Compose aufbauen
  • Wie Netzwerke in Docker funktionieren
  • Daten mit Bind Mounts und Volumes persistieren
  • Wie man eine eigene Docker-Registry aufbaut
  • Was genau Windows-Container sind
  • Wie Microservices-Architekturen funktionieren
  • Das Zusammenspiel von Docker und GitHub

Teil III: Walgesänge orchestrieren – Große Umgebungen selbst machen

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:

  • Einen Kubernetes-Cluster bauen
  • Einen Docker-Swarm-Cluster bauen

Teil IV: Der Wal und die Wolke – Docker in Cloud-Umgebungen

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:

  • Docker in Microsoft Azure ausführen
  • Docker in Amazon Web Services (AWS) ausführen

Teil V: Hands On Docker

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:

  • Eine WordPress-Entwicklungsumgebung aufbauen
  • MySQL und PostgreSQL unter Docker bereitstellen
  • Den Microsoft-SQL-Server unter Docker betreiben
  • Wie man eine DevOps-Pipeline mit Docker baut
  • Docker auf dem Raspberry Pi betreiben

Teil VI: Der Top-Ten-Teil

Kein Dummies-Buch wäre vollständig ohne den Top-Ten-Teil. Hier finden Sie

  • 10 Mythen über Docker, die falsch sind
  • 10 Szenarien, in denen man Docker hervorragend einsetzen kann
  • Die Top-10-Tools für Docker – und noch zwei mehr
  • Die 10 häufigsten Docker-Fehler

Symbole, die in diesem Buch verwendet werden

Damit Sie dieses Buch einfacher lesen und leichter benutzen können, machen Symbole auf bestimmte Informationen aufmerksam.

images Dieses Symbol kennzeichnet etwas, an das Sie sich erinnern sollten, zum Beispiel einen besonderen Befehl, den Sie bei der Arbeit mit Docker immer wieder verwenden können.

images Zum Leidwesen unserer Lektorin sind wir richtige, echte Tekkis, die aus der Technik-Ecke kommen und auch nur manchmal unter der Woche Ausgang haben. Wenn es mal wieder mit uns durchgeht und es technische Informationen gibt, die wir besonders interessant finden, haben wir sie mit einem solchen Symbol markiert. Sie können die Texte lesen, um weitere technische Hintergrundinformationen zu bekommen. Müssen Sie aber nicht. Sie können Docker auch ohne diese Informationen nutzen.

images Wenn Sie beim Experimentieren und Herumprobieren vorsichtig sein müssen, damit Sie keine wichtigen Dateien löschen oder Ihre Umgebung ansonsten irgendwie beschädigen, haben wir die entsprechenden Informationen mit dem Warndreieck markiert. Sie sollten sich an die Ratschläge halten, um Schlimmeres zu verhindern.

images Mit diesem Symbol kennzeichnen wir einen besonderen Tipp, der Ihnen Vorteile bringt, wenn Sie ihn befolgen.

images »Was der Oppa noch wusste!«. Technik – und Docker ist da keine Ausnahme – wird von Menschen gemacht. Manchmal gibt es in diesem Umfeld auch lustige oder interessante Geschichten. Diese teilen wir gerne mit Ihnen.

Wie es weitergeht

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.