UTS Namespace
基本情報
UTS(UNIX Time-Sharing System)名前空間は、Linuxカーネルの機能であり、ホスト名とNIS(Network Information Service)ドメイン名の2つのシステム識別子を分離する機能を提供します。この分離により、各UTS名前空間は独自のホスト名とNISドメイン名を持つことができ、特に各コンテナが独自のホスト名を持つ別々のシステムとして表示されるべきコンテナ化シナリオで役立ちます。
動作方法:
新しいUTS名前空間が作成されると、親名前空間からホスト名とNISドメイン名のコピーで開始されます。つまり、作成時に新しい名前空間は親と同じ識別子を共有します。ただし、名前空間内でホスト名またはNISドメイン名を変更しても、他の名前空間には影響しません。
UTS名前空間内のプロセスは、それぞれ
sethostname()
およびsetdomainname()
システムコールを使用して、ホスト名とNISドメイン名を変更できます。これらの変更は名前空間内でのみ有効であり、他の名前空間やホストシステムには影響しません。プロセスは
setns()
システムコールを使用して名前空間間を移動したり、unshare()
またはclone()
システムコールをCLONE_NEWUTS
フラグと共に使用して新しい名前空間を作成したりできます。プロセスが新しい名前空間に移動するか、新しい名前空間を作成すると、その名前空間に関連付けられたホスト名とNISドメイン名が使用されます。
Lab:
異なる名前空間を作成
CLI
マウントパラメータ--mount-proc
を使用して新しい/proc
ファイルシステムのインスタンスをマウントすることで、新しいマウント名前空間がその名前空間固有のプロセス情報に正確で隔離されたビューを持つことが保証されます。
Docker
あなたのプロセスがどの名前空間にあるかを確認します
すべてのUTSネームスペースを見つける
```bash nsenter -u TARGET_PID --pid /bin/bash ``` また、**rootユーザーでないと**、**他のプロセスの名前空間に入ることはできません**。そして、他の名前空間に入るには、それを指す**記述子がないと**(たとえば `/proc/self/ns/uts` のようなものがないと)**入ることはできません**。
ホスト名の変更
参考文献
Last updated