Docker Linux / Windows
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)
- Docker Engine vs. Mirantis Kubernetes Engine (früher Docker Enterprise)
- Container und Repositories
- Images und UnionFS
- Persistenzschicht und Volumes
- Prinzip „One Process per Container“
Docker und Windows
- Container unter Windows 10 / 11 und Windows Server 2019 / 2022
- Docker Desktop
- Windows-Container und HyperV-Container
- Linux-Container unter Windows (WSL2)
- Einsatzszenarien u. a. 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
Imagedefinition mit dem Dockerfile
- Layers und Images definieren
- Instruktionen
- Build Caching
- Build-Strategien u. a. per Multi-Stage-Build
- Build-Argumente
- Typische Infrastrukturbeispiele
Netzwerk
- Netzwerkdefinition und Treiber
- 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
Anwendungskonfiguration
- Umgebungsvariablen
- Docker Konfiguration
- Docker Secrets
Deployment
- Entwicklungsumgebungen und Toolunterstützung
- Verknüpfung GitHub und Docker Hub mit GitHub Actions
- Exkurs: Continuous Integration und Continuous Deployment z. B. mit Azure DevOps 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
Docker-Alternativen
- Podman
- BuildAh
- Skopeo
Docker für Entwickler
- Eigene Anwendungen fit machen für Docker
- Docker Builds ohne Docker Daemon
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
- Management-Tools
- Logging und Monitoring
- Ausblick auf Orchestrierung mit Kubernetes / Openshift