O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

Docker Praxiseinstieg - Deployment, Testen und Debugging von Containern in Produktivumgebungen

Book Description

  • Docker-Images und -Container verwenden
  • Container deployen und debuggen
  • Einsatz von Tools: Docker Swarm, Centurion, Amazon EC2 Container Services

Linux-Container besitzen das Potenzial, das Deployment von Applikationen für verschiedene Umgebungen stark zu verändern. Dieses Buch weist Ihnen den Weg zu einer funktionierenden Docker-Umgebung. Die Autoren zeigen Ihnen, wie Sie Docker-Images Ihrer Anwendungen inklusive aller Abhängigkeiten erstellen, wie Sie diese testen, deployen und skalieren können, und wie Sie die Container in der Produktivumgebung pflegen und warten. Dabei kommen Themen wie die Einrichtung, das Testen und das Deployment von Docker-Anwendungen ebenso zur Sprache wie das Debugging eines laufenden Systems. Mit diesem Buch werden Sie verstehen, was Docker wirklich leistet, welche Relevanz es hat, wie Sie es zum Laufen bekommen, wie Sie damit Ihre Anwendungen deployen können und was erforderlich ist, um es in einer Produktivumgebung einzusetzen.

Die Autoren dieses Buches sind in dem Unternehmen New Relic für die Sicherstellung der Stabilität der dort entwickelten Anwendungen zuständig und lassen Sie an ihren im praktischen Umgang mit Docker gesammelten Erfahrungen teilhaben. Ihre Zielsetzung lautet, Sie von ihren Erkenntnissen profitieren zu lassen und davor zu bewahren, dieselben Rückschläge hinnehmen zu müssen, die den Autoren in diesem Kontext widerfahren sind.

Aus dem Inhalt:
  • Einfachere Handhabung der Abhängigkeiten und des Deployments von Anwendungen mit Docker
  • Einsatz von Docker-Images und -Containern
  • Das Kommandozeilentool docker
  • Praxisnahe Verfahren für das Deployment und das Testen von Linux-Containern in Produktivumgebungen
  • Container-Debugging
  • Deployment skalierbarer Container in Produktivumgebungen
  • Weiterführende Themen wie Deployment-Tools, Vernetzung, Orchestrierung, Sicherheitsaspekte und Konfiguration

Table of Contents

  1. Impressum
  2. Vorwort
  3. Über die Autoren
  4. Einleitung
  5. Kapitel 1: Einführung
    1. 1.1 Die Entstehung von Docker
    2. 1.2 Das Docker-Versprechen
      1. 1.2.1 Vorteile des Docker-Workflows​
    3. 1.3 Was Docker nicht ist
  6. Kapitel 2: Docker im Überblick
    1. 2.1 Workflows vereinfachen
    2. 2.2 Umfassender Support und breite Akzeptanz
    3. 2.3 Architektur
      1. 2.3.1 Das Client/Server-Modell
      2. 2.3.2 Netzwerkports und Unix-Sockets
      3. 2.3.3 Stabile Toolboxes
      4. 2.3.4 Dockers Kommandozeilentool
      5. 2.3.5 API (Application Programming Interface)
      6. 2.3.6 Containervernetzung
    4. 2.4 Docker ausreizen
      1. 2.4.1 Container sind keine virtuellen Maschinen
      2. 2.4.2 Container sind leichtgewichtig
      3. 2.4.3 Unveränderliche Infrastruktur
      4. 2.4.4 Beschränkte Isolierung
      5. 2.4.5 Zustandslose Anwendungen
      6. 2.4.6 Zustände externalisieren
    5. 2.5 Der Docker-Workflow
      1. 2.5.1 Versionsverwaltung
      2. 2.5.2 Anwendungen erstellen
      3. 2.5.3 Testen
      4. 2.5.4 Paketerstellung
      5. 2.5.5 Deployment
      6. 2.5.6 Das Docker-Ökosystem
    6. 2.6 Zusammenfassung
  7. Kapitel 3: Docker installieren
    1. 3.1 Wichtige Begriffe
    2. 3.2 Der Docker-Client
      1. 3.2.1 Linux
      2. 3.2.2 Mac OS X 10
      3. 3.2.3 Microsoft Windows
    3. 3.3 Der Docker-Server
      1. 3.3.1 Linux mit systemd​
      2. 3.3.2 Linux mit upstart​
      3. 3.3.3 Linux mit init.d​
      4. 3.3.4 VM-basierte Server
    4. 3.4 Installation testen
      1. 3.4.1 Ubuntu
      2. 3.4.2 Fedora
      3. 3.4.3 CentOS
    5. 3.5 Zusammenfassung
  8. Kapitel 4: Docker-Images verwenden
    1. 4.1 Der Aufbau eines Dockerfiles
    2. 4.2 Erstellen eines Images
    3. 4.3 Ausführen eines Images
      1. 4.3.1 Umgebungsvariablen
    4. 4.4 Benutzerdefinierte Base-Images
    5. 4.5 Images speichern
      1. 4.5.1 Öffentliche Registries
      2. 4.5.2 Private Registries
      3. 4.5.3 Authentifizierung
      4. 4.5.4 Mirroring einer Registry
      5. 4.5.5 Weitere Ansätze bei der Auslieferung von Images
  9. Kapitel 5: Docker-Container verwenden
    1. 5.1 Was sind Container?
      1. 5.1.1 Die Entstehungsgeschichte der Container
    2. 5.2 Container erstellen
      1. 5.2.1 Grundlegende Konfiguration
      2. 5.2.2 Speichervolumes
      3. 5.2.3 Ressourcenkontingente
    3. 5.3 Container starten
    4. 5.4 Container automatisch neu starten
    5. 5.5 Container stoppen
    6. 5.6 Container sofort beenden
    7. 5.7 Ausführung eines Containers pausieren und fortsetzen
    8. 5.8 Container und Images aufräumen
    9. 5.9 Wie geht es weiter?
  10. Kapitel 6: Docker erkunden
    1. 6.1 Ausgabe der Docker-Version
    2. 6.2 Informationen über den Server
    3. 6.3 Image-Updates herunterladen
    4. 6.4 Container inspizieren
    5. 6.5 In einen laufenden Container gelangen
      1. 6.5.1 docker exec
      2. 6.5.2 nsenter
    6. 6.6 Die Shell erkunden
    7. 6.7 Rückgabe von Ergebnissen
    8. 6.8 Docker Logs
    9. 6.9 Docker überwachen
      1. 6.9.1 Containerstatistiken
      2. 6.9.2 Docker Events
      3. 6.9.3 cAdvisor
    10. 6.10 Weitere Erkundung
  11. Kapitel 7: Container ausliefern
    1. 7.1 Deployment
      1. 7.1.1 Toolklassen
      2. 7.1.2 Orchestrierungstools
      3. 7.1.3 Distributed Schedulers​
      4. 7.1.4 Deployment: Fazit
    2. 7.2 Container testen
      1. 7.2.1 Kurzübersicht
      2. 7.2.2 Externe Abhängigkeiten
  12. Kapitel 8: Container debuggen
    1. 8.1 Prozesse anzeigen
    2. 8.2 Prozesse inspizieren
    3. 8.3 Prozessverwaltung
    4. 8.4 Das Netzwerk inspizieren
    5. 8.5 Image History
    6. 8.6 Inspizieren eines Containers
    7. 8.7 Dateisystem inspizieren
    8. 8.8 So geht es weiter
  13. Kapitel 9: Skalierung
    1. 9.1 Docker Swarm
    2. 9.2 Centurion
    3. 9.3 Amazon EC2 Container Service
      1. 9.3.1 Einrichtung von IAM-Rollen
      2. 9.3.2 Einrichtung der AWS-CLI-Tools
      3. 9.3.3 Containerinstanzen
      4. 9.3.4 Tasks
      5. 9.3.5 Testen des Tasks
      6. 9.3.6 Task stoppen
    4. 9.4 Zusammenfassung
  14. Kapitel 10: Weiterführende Themen
    1. 10.1 Austauschbare Backends
      1. 10.1.1 Execution Driver
      2. 10.1.2 Storage
    2. 10.2 Container im Detail
      1. 10.2.1 Control Groups (cgroups)
      2. 10.2.2 Kernel- und Benutzernamensräume
    3. 10.3 Sicherheitsaspekte
      1. 10.3.1 Wie sicher ist Ihr Container?
      2. 10.3.2 Wie sicher ist der Docker-Daemon?
    4. 10.4 Vernetzung
  15. Kapitel 11: Container in der Produktivumgebung
    1. 11.1 The Twelve-Factor App
      1. 11.1.1 Codebasis
      2. 11.1.2 Abhängigkeiten
      3. 11.1.3 Konfiguration
      4. 11.1.4 Unterstützende Dienste
      5. 11.1.5 Build, Release und Ausführung
      6. 11.1.6 Prozesse
      7. 11.1.7 Portanbindung
      8. 11.1.8 Nebenläufigkeit
      9. 11.1.9 Austauschbarkeit
      10. 11.1.10 Gleichstellung von Entwicklungs- und Produktivumgebung
      11. 11.1.11 Logs
      12. 11.1.12 Verwaltungsvorgänge
      13. 11.1.13 »Twelve-Factor«-Zusammenfassung
    2. 11.2 The Reactive Manifesto
      1. 11.2.1 Reaktionsschnell
      2. 11.2.2 Belastbar
      3. 11.2.3 Flexibel
      4. 11.2.4 Nachrichtengesteuert
    3. 11.3 Fazit
  16. Kapitel 12: Schlussfolgerungen
    1. 12.1 Herausforderungen
    2. 12.2 Der Docker-Workflow
    3. 12.3 Minimierung der Deployment-Artefakte
    4. 12.4 Speicherung und Abruf optimieren
    5. 12.5 Der Lohn der Mühe
    6. 12.6 Schlusswort