Docker
eBook - ePub

Docker

Software entwickeln und deployen mit Containern

  1. 368 Seiten
  2. German
  3. ePUB (handyfreundlich)
  4. Über iOS und Android verfügbar
eBook - ePub

Docker

Software entwickeln und deployen mit Containern

Angaben zum Buch
Buchvorschau
Inhaltsverzeichnis
Quellenangaben

Über dieses Buch

Docker-Container bieten eine einfache, schnelle und robuste Möglichkeit, Software zu entwickeln, zu verteilen und laufen zu lassen – besonders in dynamischen und verteilten Umgebungen. Mit diesem praktischen Leitfaden lernen Sie, warum Container so wichtig sind, was durch den Einsatz von Docker möglich ist und wie Sie es in Ihren Entwicklungsprozess einbinden.Dieses Buch ist aktuell zu Docker 1.12 und ideal für Entwickler, Operations-Techniker und Administratoren – insbesondere, wenn Sie einen DevOps-Ansatz verfolgen. Es nimmt Sie mit auf eine Reise von den Grundlagen bis zum Ausführen Dutzender Container auf einem Multi-Host-System mit Networking und Scheduling. Im Verlauf des Buches erfahren Sie, welche Schritte zum Entwickeln, Testen und Bereitstellen einer Webanwendung mit Docker notwendig sind.• Beginnen Sie mit Docker, indem Sie eine einfache Webanwendung entwickeln und bereitstellen.• Nutzen Sie Techniken aus dem Continuous Deployment, um Ihre Anwendung mehrmals pro Tag in die Produktivumgebung zu bringen.• Lernen Sie Optionen und Techniken kennen, um mehrere Container gleichzeitig zu protokollieren und zu überwachen.• Befassen Sie sich mit dem Erkennen im Netzwerk und mit Services: Wie finden sich Container gegenseitig und wie verbinden Sie sie?• Orchestrieren und clustern Sie Container, um Load Balancing zu ermöglichen, Ihr System skalierbar zu machen sowie Failovers und Scheduling umzusetzen.• Sichern Sie Ihr System, indem Sie den Prinzipien der "Defense in Depth" und dem Konzept der geringsten Rechte folgen.• Setzen Sie Container ein, um eine Microservices-Architektur aufzubauen.

Häufig gestellte Fragen

Gehe einfach zum Kontobereich in den Einstellungen und klicke auf „Abo kündigen“ – ganz einfach. Nachdem du gekündigt hast, bleibt deine Mitgliedschaft für den verbleibenden Abozeitraum, den du bereits bezahlt hast, aktiv. Mehr Informationen hier.
Derzeit stehen all unsere auf Mobilgeräte reagierenden ePub-Bücher zum Download über die App zur Verfügung. Die meisten unserer PDFs stehen ebenfalls zum Download bereit; wir arbeiten daran, auch die übrigen PDFs zum Download anzubieten, bei denen dies aktuell noch nicht möglich ist. Weitere Informationen hier.
Mit beiden Aboplänen erhältst du vollen Zugang zur Bibliothek und allen Funktionen von Perlego. Die einzigen Unterschiede bestehen im Preis und dem Abozeitraum: Mit dem Jahresabo sparst du auf 12 Monate gerechnet im Vergleich zum Monatsabo rund 30 %.
Wir sind ein Online-Abodienst für Lehrbücher, bei dem du für weniger als den Preis eines einzelnen Buches pro Monat Zugang zu einer ganzen Online-Bibliothek erhältst. Mit über 1 Million Büchern zu über 1.000 verschiedenen Themen haben wir bestimmt alles, was du brauchst! Weitere Informationen hier.
Achte auf das Symbol zum Vorlesen in deinem nächsten Buch, um zu sehen, ob du es dir auch anhören kannst. Bei diesem Tool wird dir Text laut vorgelesen, wobei der Text beim Vorlesen auch grafisch hervorgehoben wird. Du kannst das Vorlesen jederzeit anhalten, beschleunigen und verlangsamen. Weitere Informationen hier.
Ja, du hast Zugang zu Docker von Adrian Mouat, Thomas Demmig im PDF- und/oder ePub-Format sowie zu anderen beliebten Büchern aus Informatik & Softwareentwicklung. Aus unserem Katalog stehen dir über 1 Million Bücher zur Verfügung.

Information

Jahr
2016
ISBN
9783960880370

Teil III
Tools und Techniken

In Teil III werden wir uns detailliert mit den Tools und Techniken befassen, die notwendig sind, um Cluster aus Docker-Containern sicher und zuverlässig laufen lassen zu können.
Wir beginnen mit Vernetzung und Service Discovery – eine Aufgabe, die schnell sehr wichtig wird, wenn wir mit Containern arbeiten, die sich auf mehr als einem Host befinden. Oder anders gesagt: Wie finden sich Ihre Container untereinander und wie verbinden Sie sie?
Dann schauen wir uns Softwarelösungen an, die dazu gedacht sind, beim Orchestrieren und Clustern von Containern zu helfen. Mit diesen Tools können Entwickler Probleme wie Load Balancing, Skalieren und Failover angehen, und Operations kann Container schedulen und die Ressourcen so gut wie möglich ausnutzen. Jede länger laufende Anwendung wird sich früher oder später diesen Problemen gegenübersehen – wenn Sie schon vorher wissen, was passieren kann und was für Möglichkeiten es gibt, ist das von entscheidendem Vorteil.
Das letzte Kapitel kümmert sich darum, wie die Sicherheit von Containern und Microservices-Deployments gewährleistet werden kann. Container bringen neue Sicherheitsanforderungen mit sich, bieten aber auch neue Tools und Techniken. Dieser Teil schließt das Buch zwar ab, aber nichtsdestotrotz handelt es sich um ein wichtiges Thema, das sich jeder, der mit Containern zu tun hat, genauer anschauen sollte.

11 Vernetzung und Service Discovery

In einem Containerumfeld kann die Grenze zwischen Service Discovery und Vernetzung erstaunlich unscharf sein. Service Discovery ist der Prozess, Clients1 eines Service mit Verbindungsinformationen (normalerweise IP-Adresse und Port) einer passenden2 Instanz davon zu versorgen. In einem statischen System auf einem Host ist das Problem einfach zu lösen, denn es gibt nur eine Instanz von allem. In einem verteilten System mit mehreren Instanzen von Services, die kommen und gehen, ist das aber viel komplizierter. Eine Möglichkeit ist, dass der Client einfach den Service über den Namen anfordert (zum Beispiel db oder api) und im Backend dann ein bisschen Magie geschieht, die dazu die passenden Daten liefert. Diese »Magie« kann in Form einfacher Ambassador-Container stattfinden, es kann sich um eine Service-Discovery-Lösung wie Consul handeln, eine Networking-Lösung wie Weave (die auch Service-Discovery-Features enthält) oder eine Kombination daraus.
Für unsere Zwecke kann Vernetzung als der Prozess des Verknüpfens von Containern betrachtet werden. Es geht nicht darum, reale Ethernet-Kabel einzustecken, auch wenn häufig ein Softwareäquivalent wie veth im Spiel ist. Containervernetzung beginnt mit der Annahme, dass es eine Route zwischen Hosts gibt – egal, ob diese Route über das öffentliche Internet läuft oder nur über einen schnellen lokalen Switch.
Mit dem Service Discovery können Clients also Instanzen finden, und die Vernetzung kümmert sich darum, die Verbindungen herzustellen. Vernetzungsund Service-Discovery-Lösungen haben häufig gemeinsame Funktionalität, da Service-Discovery-Lösungen auf Ziele im Netz verweisen und Vernetzungslösungen häufig auch Service-Discovery-Features enthalten (wie zum Beispiel Weave). Eine reine Service-Discovery-Lösung wie Consul wird sehr wahrscheinlich mehr Funktionalität in den Bereichen Health Checking, Failover und Load Balancing bieten. Vernetzungslösungen bieten andere Möglichkeiten zum Verbinden und Routen von Containern,3 aber auch Features wie die Verschlüsselung der übertragenen Daten und das Isolieren von Containergruppen.
Sehr häufig werden Sie sowohl eine Service-Discovery- als auch eine Vernetzungslösung einsetzen müssen (und Sie brauchen immer irgendeine Form von Vernetzung). Es hängt von Ihrer Situation ab, was genau benötigt wird, und die Best Practices sind immer noch in der Entwicklung. Die Vernetzung wird sehr wahrscheinlich zwischen Entwicklungs-, Test- und Produktivumgebung verschieden sein, aber beim Service Discovery werden die Entscheidungen meist auf Anwendungsebene getroffen und daher in allen Umgebungen gleich sein.
Dieses Kapitel versucht, die Vernetzungs- und Service-Discovery-Landschaft in allen Komplexitätsstufen vorzustellen, daher beginnen wir mit der einfachsten Cross-Host-Lösung – Ambassador-Containern –, bevor wir uns Lösungen zum Service Discovery anschauen (einschließlich etcd und Consul) und uns dann die Vernetzungsdetails bei Docker und Lösungen wie Weave, Flannel und Project Calico vornehmen.

11.1 Ambassadors

Eine Möglichkeit, Container über Hosts hinweg zu verbinden, ist der Einsatz von Ambassadors.4 Dabei handelt es sich um Proxy-Container, die für den echten Container (oder Service) zur Verfügung stehen und den Verkehr dorthin weiterleiten. Ambassadors bieten die Möglichkeit der Separation of Concerns, was sie in vielen Situationen nützlich macht, nicht nur beim Verbinden von Services zwischen Hosts.
Der größte Vorteil von Ambassador-Containern ist, dass sie es erlauben, die Netzwerkarchitektur im Produktivsystem von der im Entwicklungssystem zu unterscheiden, ohne dass der Code angepasst werden muss. Entwickler können lokale Versionen von Datenbanken und anderen Ressourcen einsetzen und wissen dabei, dass Ops die Anwendung so umkonfigurieren kann, dass ihre eigenen geclusterten Services oder Remote-Ressourcen genutzt werden, ohne etwas am Code ändern zu müssen. Ambassadors können auch während des Einsatzes umkonfiguriert werden, um einen anderen Service einzusetzen, während beim Einsatz von Links für die direkte Verbindung zum Service ein Neustart des Client-Containers notwendig wäre.
Der Nachteil von Ambassador-Containern ist, dass sie ebenfalls konfiguriert werden müssen, für zusätzlichen Overhead sorgen und eine weitere mögliche Fehlerquelle bedeuten. Sie können schnell sehr komplex werden und die Verwaltung erschweren, wenn mehrere Verbindungen erforderlich sind.
In Abbildung 11–1 sehen wir eine typische Entwicklungsumgebung, bei der der Entwickler den Anwendungscontainer mithilfe von Docker-Links direkt mit einem Datenbank-Container verbindet. Beides läuft lokal auf seinem Laptop. Das ist für schnelle Änderungen super, und man kann beim Entwickeln auch Teile wegwerfen und neu anfangen.
image
Abb. 11–1 Entwicklungsumgebung ohne Ambassadors
In Abbildung 11–2 ist ein übliches Produktiv-Setup zu sehen, bei dem Ops einen Ambassador einsetzt, um die Anwendung mit ihrem Produktivservice zu verbinden...

Inhaltsverzeichnis

  1. Geleitwort zur deutschen Übersetzung
  2. Vorwort
  3. Inhaltsverzeichnis
  4. Teil IHintergrund und Grundlagen
  5. Teil IIDer Software-Lebenszyklus mit Docker
  6. Teil IIITools und Techniken