CGroup Namespace
基本情報
CGroup Namespaceは、名前空間内で実行されるプロセスのためのcgroup階層の分離を提供するLinuxカーネル機能です。コントロールグループの略であるCgroupsは、プロセスを階層的グループに整理して、CPU、メモリ、I/Oなどのシステムリソースに制限を設けるためのカーネル機能です。
Cgroup名前空間は、PID、マウント、ネットワークなど他の名前空間タイプとは異なる独立した名前空間タイプではありませんが、名前空間分離の概念に関連しています。Cgroup名前空間はcgroup階層のビューを仮想化し、その結果、cgroup名前空間内で実行されるプロセスは、ホストまたは他の名前空間で実行されるプロセスと比較して、階層の異なるビューを持ちます。
動作方法:
新しいcgroup名前空間が作成されると、作成プロセスのcgroupに基づいたcgroup階層のビューで開始されます。これは、新しいcgroup名前空間で実行されるプロセスが、作成プロセスのcgroupを根とするcgroupサブツリーに制限されたcgroup階層のサブセットのみを見ることを意味します。
cgroup名前空間内のプロセスは、自分自身のcgroupを階層のルートとして見ることになります。つまり、名前空間内のプロセスの視点からは、自分自身のcgroupがルートとして表示され、自分自身のサブツリーの外側のcgroupを見たりアクセスしたりすることはできません。
Cgroup名前空間はリソースの分離を直接提供しません。リソースの制御と分離は、cgroupサブシステム(例:CPU、メモリなど)自体によって依然として強制されます。
CGroupsに関する詳細情報は次を参照してください:
pageCGroupsLab:
異なる名前空間を作成する
CLI
--mount-proc
パラメータを使用して /proc
ファイルシステムの新しいインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報に対して正確で隔離されたビューを持つことが保証されます。
Docker
あなたのプロセスがどの名前空間にあるかを確認します
すべてのCGroup名前空間を見つける
```bash nsenter -C TARGET_PID --pid /bin/bash ``` また、**rootユーザーでないと他のプロセスの名前空間に入ることはできません**。そして、他の名前空間に**ディスクリプタ**が指すことなしには**入ることができません**(例:`/proc/self/ns/cgroup`)。
参考文献
Last updated