Docker und andere Container-Virtualisierer isolieren Prozesse mittels Control-Groups (CGroups) und Namespaces. Die Basis dieser Funktionalität wurde Anfang 2008 in den Linux-Kernel 2.6 integriert und seitdem immer wieder aktualisiert und erweitert. CGroups erlauben das Einschränken von Prozessen hinsichtlich Betriebssystem-Ressourcen sowie CPU- und IO-Nutzung. Zusätzlich gibt es Userspace-Tools in der Bibliothek "libcgroup" für das Management der CGroups, die Accounting und Zustandskontrolle der Prozesse erlauben.
CGroups werden ergänzt durch die Fähigkeiten des Linux-Kernels, Prozessen in Namespaces Zugriff auf Gruppen von Ressourcen zu ermöglichen. Namespaces gibt es beispielsweise für Benutzer und Gruppen, Prozess-IDs, Netzwerkzugriff inklusive IPTables und Routing, Dateisysteme und Verzeichnisstrukturen sowie Interprozesskommunikation. Wie Namespaces grundsätzlich funktionieren, können Sie mit den folgenden Befehlen beispielsweise für PIDs ausprobieren:
$ sudo unshare --pid --fork --mount-proc bash...
Der komplette Artikel ist nur für Abonnenten des ADMIN Archiv-Abos verfügbar.