1. ホーム
  2. linux

[解決済み] cgroupsとnamespacesの違い

2022-10-11 11:13:11

質問

私は最近 docker を学び始めましたが、重い作業のほとんどは Linux カーネルによって行われ、名前空間と cgroups を使用しているようです。

私が混乱していることをいくつか発見しました。

  1. ネームスペースと cgroup の違いは何ですか? また、両者が対応する異なるユースケースとは何でしょうか。

  2. dockerはこの上に何を実装し、人気を博しているのでしょうか?

  3. これらの機能の内部と、どのように実装されているのかを知りたいです。

どのように解決するのですか?

この二つの概念に対応する適切なリンクは PR 14307 :

<ブロッククオート

Dockerは、その内部では以下のようなコンポーネントで構成されています。

Dockerは cgroups そして namespaces Linux カーネルの機能

で。

  • cグループ : 制御グループは、タスクのセットとその将来の子タスクを、特殊な振る舞いをする階層的なグループに集約/分割するためのメカニズムを提供します。
  • 名前空間 : グローバルなシステムリソースを抽象化してラップし、名前空間内のプロセスには、グローバルリソースの独自の孤立したインスタンスがあるように見せかけます。

要するに

  • Cグループ =使用量を制限します。
  • 名前空間 = 見えるもの (つまり使えるもの) を制限する

詳しくは " でご覧ください。 コンテナの解剖学。名前空間、cgroups、およびいくつかのファイルシステムのマジック によるものです。 Jérôme Petazzoni .

Cグループは、リソースの計測と制限を伴います。

  • メモリ
  • CPU
  • ブロックI/O
  • ネットワーク

名前空間は、プロセスにシステムの独自のビューを提供します。

複数の名前空間