2016-01-15 5 views
21

Ich habe vor kurzem begonnen, docker zu lernen, und es scheint, dass der größte Teil des Heavy Lifting vom Linux-Kernel erledigt wird, indem Namespaces und Cgroups verwendet werden.Unterschied zwischen Cgroups und Namespaces

Ein paar Dinge, die ich verwirrend bin zu finden sind:

  1. Was ist der Unterschied zwischen einem Namespace und einer Kontrollgruppe? Was sind die verschiedenen Anwendungsfälle, die sie ansprechen?

  2. Was hat Docker implementiert, um diese Popularität zu gewinnen?

  3. Ich würde gerne die Interna dieser Funktionen und wie sie implementiert sind, kennen.

+0

Siehe https://en.wikipedia.org/wiki/Cgroups und https://en.wikipedia.org/wiki/Cgroups#Namespace_isolation – gavv

Antwort

36

Die richtigen Verbindungen für diese beiden Begriffe wurden in PR 14307 behoben:

Unter der Haube Docker auf den folgenden Komponenten aufgebaut ist:

Die cgroups und namespaces Fähigkeiten der Linux-Kernel

Wit h:

  • cgroup: Kontrollgruppen stellen einen Mechanismus für die Aggregation/Einteilungssätze von Aufgaben und alle ihre zukünftigen Kinder, in hierarchischen Gruppen mit spezialisierten Verhalten.
  • Namespace: Wrappt eine globale Systemressource in einer Abstraktion, die den Prozessen im Namespace so erscheint, dass sie ihre eigene isolierte Instanz der globalen Ressource haben.

Kurz:

  • Cgroups = Grenzen, wie viel Sie verwenden;
  • Namespaces = Grenzen, was Sie (und damit verwenden)

Mehr unter "Anatomy of a Container: Namespaces, cgroups & Some Filesystem Magic" von Jérôme Petazzoni sehen können.

Cgroups Ressourcenmessung einzubeziehen und zu beschränken:

  • Speicher
  • CPU
  • Block I/O
  • Netzwerk

Namensräume werden, Prozesse mit ihrer eigenen Ansicht des Systems

Mul Tiple Namensräume:

Verwandte Themen