6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

unshareコマンドで、Namespaceを作成してみる

Last updated at Posted at 2021-03-03

こんにちは。

Dockerの仕組みを学習して、__コンテナはNamespaceなどのLinuxの機能で出来ている__事が判明し、Namespaceを自分で作成できることがわかったので試してみました。
今回は__プロセス__の分離と、__ホスト名__の分離を行いました。

$ unshare コマンドでNamespaceを作成してみる

筆者はCentOS7環境で行っています。

プロセスの分離(PID, Mount)

まず$ps axで通常のNamespaceのプロセスを表示します。

たくさん表示されます。

$ ps ax
  PID TTY      STAT   TIME COMMAND
    1 ?        Ss     0:01 /usr/lib/systemd/systemd --switched-root --system --d
    2 ?        S      0:00 [kthreadd]
    3 ?        S      0:00 [kworker/0:0]
    4 ?        S<     0:00 [kworker/0:0H]
    5 ?        S      0:00 [kworker/u4:0]  
    ~~~
    2195 pts/0    R+     0:00 ps ax

Namespaceを作成するために以下のコマンドを実行します。

$ sudo unshare --pid --mount-proc --fork /bin/bash
  • --pidは、PID Namespaceを分離します。
  • --mount-procは、/procディレクトリをマウントする設定で、これを指定しないと__親のpid名前空間__の情報を出力してしまいます。
    /procディレクトリは、システムの状態などが保管されている特殊なディレクトリで、これらはメモリ上に保存される__仮想ファイル__と呼ばれるものです。
  • --forkは指定されたプログラムを直接実行するのではなく、unshareの子プロセスとしてフォークします。

PID Namespaceを作成する際は、これらがセットで用いられるのが一般的のようです。

新たなNamespaceで$ps axを実行すると、bashpsのみが表示され、__プロセス空間が分離__されていることがわかります。

# ps ax
  PID TTY      STAT   TIME COMMAND
    1 pts/0    S      0:00 /bin/bash
   14 pts/0    R+     0:00 ps ax

確認ができたので、$exitで元の名前空間に戻ります。

# exit
exit

ホスト名の分離(UTS)

今度はホスト名の分離をします。
ホスト名は__UTS Namespace__で管理されています。

$hostnameで現在のホスト名を確認します。

$ hostname
localhost.localdomain

以下のコマンドでUTS Namespaceを分離します。

$ sudo unshare -u /bin/bash
  • -uはUTS Namespaceを分離します。

以下のコマンドで__ホスト名__をnewhostに変更します。

# hostname newhost

再度$hostnameを実行し、ホスト名が__変更された__ことを確認します。

# hostname
newhost

$exitで__元のNamespace__に戻ります。

# exit
exit

最後にもう一度$hostnameを実行し、__元のNamespace__では__ホスト名が変更されていない__事が確認できます。

$ hostname
localhost.localdomain
6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?