Ein Container ist nur ein Prozess
„Container sind doch nur schlanke VMs." Diesen Satz höre ich in fast jeder Schulung, und er ist das hartnäckigste Missverständnis rund um Docker. Die Wahrheit ist einfacher: Ein Container ist ein ganz normaler Linux-Prozess, mit Sichtschutz (Namespaces), Ressourcen-Deckel (cgroups) und eigenen Dateien aus dem Image.
Wer das einmal verstanden hat, kann sich fast alles Weitere selbst herleiten: warum Container in Millisekunden starten, warum Docker Desktop auf Windows eine kleine Linux-VM braucht, und warum Kubernetes gar kein Docker benötigt.
Am Ende der Kette steht kein Hypervisor, sondern ein Prozess.
Glaubst du nicht? Der Beweis passt in drei Kommandos, außen und innen betrachtet:
docker container top beweis # außen: normale Host-PID
docker container exec beweis \
cat /proc/1/comm # innen: PID 1 ist nginx
Im Beitrag gehe ich die ganze Kette durch, vom docker run über dockerd, containerd und runc bis zu der Frage, wer eigentlich deine Images verwaltet. Denn auch da hat sich etwas verschoben: Der containerd image store ist inzwischen der Standard, und beim Umschalten gibt es eine Stolperfalle mit scheinbar verschwundenen Images.
| Zum Beitrag → |
Zum Ausdrucken und Weitergeben: die Kernel-Bausteine, die Kette und der Beweis als kompakter Spickzettel im PDF-Format, drei Seiten, auch fürs Team.
Bis nächste Woche,
Christian