Docker が扱う namespace
kubenetesとかdockerとかなんとなく触ってはいるけど、正直詳しく知らない。 なのでGW中にせめてdockerとだけでも仲良くなろうと思う。
まず第一弾はnamespaceについて。
PID namespace
- PIDとプロセスを隔離する
- namespaceの異なるプロセス同士はお互いにアクセスできない
Network namespace
- IPアドレス、ポート番号、ルーティングテーブルなど、ネットワークに関する情報をnamespaceごとに定義可能にする
- ホストOS上で使用中のポート番号も利用可能になる
UID namespace
- UID/GIDをnamespaceごとに独立して持つことが可能
- namespaceとUID/GIDが紐づけられるため、namespaceの内外で異なるUID/GIDを持つことが可能になる
- 例えばnamespace内ではUID/GIDが0のrootユーザを、ホストOS上では一般ユーザとして扱える
- namespace内の管理者アカウントはホストOSに対して管理権限を持たないということを意味するため、セキュアな環境に隔離可能
MOUNT namespace
- マウント操作を行うと、namespace内に隔離されたファイルシステムツリーを構築する
- namespace内で行ったマウントはホストOSや他namespaceからはアクセスできない
UTS namespace
- namespaceごとにホスト名やドメイン名を独自に持つことを可能にする
IPC namespace
- プロセス間通信(IPC)オブジェクトをnamespaceごとに独自に持つことを可能にする
- IPCは共有メモリやセマフォ、メッセージングキューのこと