Docker
Isolation von Anwendungen in Containern mithilfe von Betriebssystemvirtualisierung
Micro-Service-Architektur, vereinfachte Continuous Integration und Delivery, die Migration von Entwicklern und Administratoren hin zu DevOps – wenige Technologien haben in so kurzer Zeit einen so großen Einfluss auf unterschiedlichste IT-Bereiche gehabt wie Docker. Von einigen als „Hype“ abgetan, nutzen andere Docker längst erfolgreich in kleinen wie in großen Projekten.
Einführung
- Warum Docker entwickelt wurde
- Was Docker tatsächlich ist
- Für wen Docker gedacht ist
- Welche Probleme Docker löst
- Docker vs. klassische Virtualisierung
- Docker im Entwicklungsprozess
- Docker in der Infrastruktur / Administration
- Automatisierungsmöglichkeiten
Docker allgemein
- Core-Komponenten (Server, Client, Library)
- Ökosystem (Hub, Store, Kinematic)
- Community Edition vs. Enterprise Edition
- Container und Repositories
- Images und UnionFS
- Persistenzschicht und Volumes
- Prinzip „One Process per Container“
Docker und Windows
- Container unter Windows 10 und Windows Server 2016
- Docker for Windows
- Windows-Container und HyperV-Container
- Linux-Container unter Windows
- Container als Brückentechnologie für Legacy-Anwendungen
Container Management
- Erzeugen von Containern
- Provisionierung und Deprovisionierung von Containern
- Persistieren von Daten
- Migration zwischen Hosts
- Container Deep Dive
Containerdefinition mit dem Dockerfile
- Layers und Images definieren
- Instruktionen
- Build Caching
- Typische Infrastrukturbeispiele
Netzwerk
- Netzwerkdefinition
- Kommunikation von Containern mit der Außenwelt
- Container verbinden / isolieren
Multi-Container und Multi-Host
- Multi-Container mit Docker Compose und Docker Stack
- Multi-Host mit Docker Swarm
- Multi-Architektur – Kombination Windows- und Linux-Containern
- Konfiguration in verteilten Umgebungen
Deployment
- Entwicklungsumgebungen und Toolunterstützung
- Multi-Stage-Build
- Verknüpfung GitHub und Docker Hub
- Exkurs: Continuous Integration und Continuous Deployment z. B. mit Visual Studio Team Services oder TeamCity
- Von der Entwicklungsmaschine aufs Produktivsystem
Eigene Docker-Infrastrukturen
- Warum sich ein eigenes Repository lohnt
- Einrichtung und Rollen
- Auto-Deployment mit Docker Machine
Praxistipps und -tricks
- Abgrenzung: Wann wird Docker genutzt, wann werden virtuelle Maschinen eingesetzt
- Docker Anti-Entwurfsmuster
- Entwicklungsprozesse
- Sicherheit, Sicherung und Aktualisierungen
- Container-Performance und -Metriken
- Ressourcen und Buchtipps
Besonderheiten bei Kubernetes
- Docker Swarm vs. Kubernetes
- Identifikation von Use-Cases für Kubernetes
- Verständnis für Cluster-Komponenten: Pods, Labels, Replication Controllers, Services
- Verständnis für Cluster-Komponenten: Master- und Cluster-Nodes
- Umgang mit der Kommandozeile
kubectl
- Definieren eines Pods anhand eines JSON-Templates
- Deployment eines Pods in einem Kubernetes-Cluster
- Erstellen eines Kubernetes-Clusters
- Liveness & Readiness-Probe
- Einführung von Health Checks
- Einsatz von Helm für das Templating
- Typische Kubernetes-Patterns wie Sidecars
- Zentrales Logging mit dem ELK-Stack
- Verwenden des Kubernetes Modes mit Docker EE