cgroups プロセスまたは一連のプロセスが使用できるリソースを制限します。これらのリソースは、CPU、メモリ、ネットワーク I/O、またはファイルシステムへのアクセス です。 一方、名前空間はプロセスのグループの可視性をシステムの残りの部分に制限します。
Linux カーネルの Cgroups と名前空間が最新のコンテナーを可能にする方法
これら 2 つの概念の適切なリンクは、PR 14307 で修正されています:
<ブロック引用>内部では、Docker は次のコンポーネントで構築されています。
cgroups と namespaces
Linux カーネルの機能
と:
- cgroup :コントロール グループは、一連のタスクとそれらの将来のすべての子を、特殊な動作を持つ階層グループに集約/分割するためのメカニズムを提供します。
- 名前空間 :グローバル システム リソースを抽象化してラップし、名前空間内のプロセスに、グローバル リソースの独自の分離されたインスタンスがあるように見せます。
要するに:
- Cgroups =使用できる量を制限します;
- 名前空間 =表示できるもの (したがって使用できるもの) を制限します
詳細については、Jérôme Petazzoni による「コンテナーの構造:名前空間、cgroup、ファイルシステムの魔法」を参照してください。
cgroup には、リソースの計測と制限が含まれます。
- 記憶
- CPU
- ブロック I/O
- ネットワーク
名前空間は、システムの独自のビューをプロセスに提供します
複数の名前空間:
- ピッド
- ネット
- 分
- うた
- IPC
- ユーザー:ユーザー docker 1.10で実験的段階を卒業しています
(権限のないユーザーへのコンテナ ルートのデーモン インスタンスごとの再マッピングが進行中です:PR 12648:その設計を参照してください)