namespaceとは
リナックスオブジェクトに名前を付けて同じ名前のオブジェクトを1つとして管理すること
6つの独立環境
Linuxのオブジェクトに名前を付けることで以下のような6つの独立された環境を構築できます。
-
PID namespace
-
プロセスに与えられたユニークなIDを指す。これを利用してプロセスを隔離できる。
-
namespace異なる場合はアクセスができない。
-
Network namespace
-
ネットワークリソース(IPアドレス、ポート番号、Routing Tableなど)がnamespaceごとに独立に与えられる。
-
この機能を利用するとOS上で使用中のPortがあってもコンテナ内で同じPortを使用できる。
-
UID namespace
-
ユーザーID(UID)とグループID(GID)をnamespaceごとに区分(独立に持っていける)
-
コンテナではルート権限を持っていてもポストの管理権限を持てないように隔離する機能。
-
namespace内とホストOS上で異なるUID、GIDを持つことができる。
-
MOUNT namespace
-
Linuxでデバイスを認識するためマウントが必要。
- マウント:コンピュータにつながっている機器及び記憶装置をOSに認識させ、使用可能状態にすること
-
ファイルシステムなどマウントされたデバイスをnamespaceごとに隔離。
-
ホストOSとnamespaceが異なるファイルシステムのツリーを持つことができる。
-
UTS namespace
-
namespaceごとにホスト名やドメイン名を独自に持つことができる。(独自に設定可能)
-
IPC namespace
-
プロセス間通信(IPC:Inter Process Communication)オブジェクトをnamespaceごとに独立的に持つことができる。
-
共有メモリ(Shared Memory)、セマフォ(Semaphore)、メッセージキュー(Message Queue)などを独立的に使用。