CGroup Namespace
Grundlegende Informationen
Ein CGroup-Namespace ist eine Funktion des Linux-Kernels, die die Isolierung von CGroup-Hierarchien für Prozesse innerhalb eines Namespaces ermöglicht. CGroups, kurz für Control Groups, sind eine Funktion des Kernels, die es ermöglicht, Prozesse in hierarchische Gruppen zu organisieren, um Grenzen für Systemressourcen wie CPU, Speicher und I/O zu verwalten und durchzusetzen.
Obwohl CGroup-Namespaces kein separater Namespacetyp wie die zuvor besprochenen (PID, Mount, Netzwerk usw.) sind, stehen sie im Zusammenhang mit dem Konzept der Namespacen-Isolierung. CGroup-Namespaces virtualisieren die Ansicht der CGroup-Hierarchie, sodass Prozesse, die in einem CGroup-Namespace ausgeführt werden, eine andere Ansicht der Hierarchie haben als Prozesse, die im Host oder in anderen Namespaces ausgeführt werden.
Funktionsweise:
Wenn ein neuer CGroup-Namespace erstellt wird, beginnt er mit einer Ansicht der CGroup-Hierarchie basierend auf der CGroup des erstellenden Prozesses. Das bedeutet, dass Prozesse, die in dem neuen CGroup-Namespace ausgeführt werden, nur einen Teil der gesamten CGroup-Hierarchie sehen, der auf den CGroup-Unterbaum beschränkt ist, der bei der CGroup des erstellenden Prozesses beginnt.
Prozesse innerhalb eines CGroup-Namespace sehen ihre eigene CGroup als Wurzel der Hierarchie. Das bedeutet, dass aus der Perspektive von Prozessen innerhalb des Namespaces ihre eigene CGroup als Wurzel erscheint und sie CGroups außerhalb ihres eigenen Unterbaums nicht sehen oder darauf zugreifen können.
CGroup-Namespaces bieten keine direkte Isolierung von Ressourcen; sie bieten nur eine Isolierung der Ansicht der CGroup-Hierarchie. Die Ressourcenkontrolle und -isolierung wird weiterhin von den CGroup-Subsystemen (z. B. CPU, Speicher usw.) selbst durchgesetzt.
Weitere Informationen zu CGroups finden Sie unter:
pageCGroupsLabor:
Erstellen Sie verschiedene Namespaces
CLI
Durch das Einhängen einer neuen Instanz des /proc
-Dateisystems mit dem Parameter --mount-proc
stellen Sie sicher, dass der neue Mount-Namespace eine genaue und isolierte Ansicht der prozessspezifischen Informationen für diesen Namespace hat.
Docker
Überprüfen Sie, in welchem Namespace sich Ihr Prozess befindet
Um festzustellen, in welchem Namespace sich Ihr Prozess befindet, können Sie den folgenden Befehl verwenden:
Dieser Befehl gibt Informationen über die Control Group (cgroup) des aktuellen Prozesses aus. Die cgroup-Datei enthält den Pfad zum cgroup-Verzeichnis, das dem Prozess zugeordnet ist. Wenn der Prozess in einem bestimmten Namespace ausgeführt wird, wird der Namespace-Pfad in der cgroup-Datei angezeigt.
Alle CGroup-Namespaces finden
```bash nsenter -C TARGET_PID --pid /bin/bash ``` Außerdem können Sie nur in einen anderen Prozess-Namespace eintreten, wenn Sie root sind. Und Sie können nicht in einen anderen Namespace eintreten, ohne einen darauf verweisenden Deskriptor (wie z.B. `/proc/self/ns/cgroup`) zu haben.
Referenzen
Last updated