Docker – wie es innen funktioniert
Vom Befehl docker run bis zum laufenden Prozess: Client, Daemon, containerd und runc, Images aus Schichten, Isolation durch Namespaces und cgroups, Netze, Volumes – und Docker Compose. Alles interaktiv, Schritt für Schritt.
🏗️Aufbau: wer macht was?
Auf einen Baustein klicken, um ihn zu erklären.
dockerd
dockerd ist der Daemon: Er verwaltet Images, Container, Netze und Volumes, bietet die REST-API und kümmert sich um Build (BuildKit), Pull/Push, Port-Veröffentlichung und Logs. Die eigentliche Container-Ausführung gibt er an containerd weiter.
- ▸Konfiguration:
/etc/docker/daemon.json - ▸Netze über die Bibliothek libnetwork
- ▸Logs der Container über Log-Treiber (json-file, journald …)
🆚Container oder virtuelle Maschine?
🖥️ Virtuelle Maschine
┌─────────┐┌─────────┐ │ App A ││ App B │ ├─────────┤├─────────┤ │ Gast-OS ││ Gast-OS │ ← je ein eigener Kernel └─────────┘└─────────┘ ┌────────────────────┐ │ Hypervisor │ ├────────────────────┤ │Host-Betriebssystem │ └────────────────────┘
Starke Trennung durch Hardware-Virtualisierung, aber Gigabytes pro Gast und Startzeiten im Sekundenbereich.
📦 Container
┌─────────┐┌─────────┐ │ App A ││ App B │ │ + Libs ││ + Libs │ ← nur Dateien + Namespaces └─────────┘└─────────┘ ┌────────────────────┐ │ Docker / containerd│ ├────────────────────┤ │ Host-Kernel (Linux)│ ← von allen geteilt └────────────────────┘
Normale Prozesse mit eingeschränkter Sicht: Megabytes statt Gigabytes, Start in Millisekunden – aber ein gemeinsamer Kernel.
🧭Kapitel
docker run im Debugger
Pull, Layer entpacken, Namespaces, veth, iptables, Start – 17 Schritte vor und zurück.
Images & Layer
Referenzen, Manifest und Digest (live berechnet), OverlayFS mit Copy-on-Write zum Ausprobieren.
Dockerfile & Build-Cache
Zeile ändern → Cache-Treffer und -Fehlschläge sehen. Multi-Stage mit Größenvergleich.
Container
Lebenszyklus, Namespaces, cgroups, Restart-Policies und Healthchecks als Simulator.
Netzwerk
bridge, host, none, eigene Netze, Port-Mapping mit echten iptables-Regeln, eingebautes DNS.
Volumes & Bind-Mounts
Wo liegen die Daten? Volume, Bind-Mount und tmpfs im Vergleich.
Compose-Visualizer
docker-compose.yml einfügen → Diagramm, Startreihenfolge, Fehlerprüfung, Overrides, Profile.
Befehls-Spickzettel
Die wichtigsten Befehle mit Erklärung und Beispielausgabe, durchsuchbar.