Kurz erklärt
Ein Container ist kein Mini-Computer, sondern ein normaler Linux-Prozess, der mit Namespaces vom Rest abgeschottet und mit cgroups in seinen Ressourcen begrenzt wird.
Genauer
Namespaces geben dem Prozess eine eigene Sicht auf System-Ressourcen: eigene Prozess-IDs, Netzwerk, Dateisystem, Hostname, Benutzer. Cgroups begrenzen CPU, Speicher und I/O. Ein Overlay-Dateisystem schichtet das Image aus nur lesbaren Ebenen und einer beschreibbaren obersten Ebene.