Docker (Web)
Definition: Docker ist eine Open-Source-Containerisierungsplattform, die Webanwendungen zusammen mit allen ihren Abhängigkeiten (Runtime, Bibliotheken, Konfiguration) in isolierte, standardisierte Container verpackt. Ein Docker-Container läuft identisch auf jedem System – lokal, auf dem Staging-Server oder in der Cloud – unabhängig vom zugrundeliegenden Betriebssystem. Docker löst das klassische «works on my machine»-Problem, vereinfacht Deployments und bildet die Grundlage für Container-Orchestrierung mit Kubernetes. Im Web-Marketing-Kontext ist Docker relevant für Tracking-Server, Server-Side-Tagging-Implementierungen, Custom-Analytics-Setups und Entwicklungsumgebungen.
Erläuterung
Container unterscheiden sich von Virtual Machines: Während VMs ein vollständiges Betriebssystem virtualisieren (mehr Overhead, langsamer Start), teilen Container den Host-Kernel und virtualisieren nur die Anwendungsschicht. Container starten in Sekunden statt Minuten, benötigen weniger Ressourcen und sind portabler. Docker ist das am weitesten verbreitete Container-Format und Basis für Cloud-native Deployments.
Docker-Kernkonzepte
- Docker Image: Unveränderliche Vorlage (Snapshot) einer Anwendung mit allen Abhängigkeiten; aus Dockerfile gebaut; in Layers aufgebaut (jeder Build-Schritt = Layer); Docker Hub als öffentliche Registry für offizielle Images (nginx:alpine, node:20, php:8.3-fpm); eigene Images in privater Registry speichern
- Docker Container: Laufende Instanz eines Docker Images; isolierter Prozess mit eigenem Dateisystem, Netzwerk und Ressourcenlimit; viele Container aus einem Image starten; Container sind ephemeral (Daten gehen verloren wenn Container entfernt wird → Volumes für Persistenz)
- Dockerfile: Textdatei mit Build-Instruktionen für Docker Image; FROM (Basis-Image), RUN (Befehle ausführen), COPY (Dateien kopieren), EXPOSE (Port deklarieren), CMD/ENTRYPOINT (Start-Befehl); Best Practice: Multi-stage Builds für kleinere Produktions-Images
- Docker Compose: Tool für Multi-Container-Anwendungen; docker-compose.yml definiert Services, Netzwerke und Volumes; docker compose up startet alle Services; Beispiel: WordPress + MySQL + Redis + Nginx als komplette Entwicklungsumgebung mit einem Befehl
Docker in der Web-Entwicklung
- Lokale Entwicklungsumgebungen: Identische Umgebung für alle Team-Mitglieder unabhängig von lokalem OS; PHP-Version, Node.js-Version, Datenbank-Version konsistent; neues Team-Mitglied startet mit docker compose up in 2 Minuten statt stundenlangem Setup; kein «bei mir funktioniert es»-Problem
- WordPress-Entwicklung: Offizielles wordpress:php8.3-apache Image; docker-compose.yml mit wordpress + mysql Services; Volume für wp-content (Themes, Plugins) für Persistenz; einfaches Klonen zwischen Entwicklung und Staging; vorgefertigte Stacks: LocalWP (Desktop-Tool) nutzt Docker intern
- Node.js-Anwendungen: node:20-alpine als Basis; Multi-stage Build: Build-Stage (npm build) + Runtime-Stage (nur dist/); optimierte Produktions-Images unter 100 MB; Umgebungsvariablen via .env-Files für Entwicklung und Secrets Management für Produktion
- Server-Side Tagging (GTM sGTM): Google Tag Manager Server-Side läuft als Docker-Container; Deployment auf Google Cloud Run oder AWS ECS; Docker-Image von Google bereitgestellt; skaliert automatisch mit Traffic; Marketing-relevanter Docker-Anwendungsfall für datenschutzkonformes Tracking
Skalierung und Produktion
- Container Registry: Docker Hub (öffentlich/privat): Standard-Registry; GitHub Container Registry: in GitHub Actions integriert; AWS ECR, Google Artifact Registry, Azure Container Registry für Cloud-native Deployments; Images mit Tags versionieren (latest, v1.2.3, git-commit-hash)
- Horizontale Skalierung: Bei Traffic-Spitzen (Kampagnenstarts) mehrere Container-Instanzen parallel starten; Load Balancer verteilt Traffic auf Instanzen; Container starten in Sekunden; Auto-Scaling auf Kubernetes oder Cloud Run vollautomatisch; kein manuelles Server-Provisioning
- Kubernetes als nächste Stufe: Container-Orchestrierung für viele Container; automatisches Scheduling, Skalierung, Rollout und Recovery; Kubernetes (K8s) läuft auf Docker-Containern; für Marketing-Infrastruktur meist nur relevant bei sehr hohem Traffic oder komplexen Microservice-Setups