SYNOPSIS
lxc-unshare {-s namespaces} [-u user] [-H hostname] [-i ifname] [-d] [-M] {command}説明
lxc-unshare はクローンされた名前空間の組の中でタスクを実行するのに使います。 このコマンドは主にテスト目的で使います。 このような名前であるにもかかわらず、このコマンドは常に、新しい名前空間で新しいタスクを作成するために unshare ではなく clone を使います。 テスト中のカーネルの退行は別として、これで違いは生じないはずです。オプション
- -s namespaces
- アタッチする名前空間を、パイプでつなげたリストで指定します。 例えば NETWORK|IPC のようにです。 指定できる値は MOUNT、PID、UTSNAME、IPC、USER 、NETWORK です。 これにより、プロセスのコンテキストを変更することができます。 例えば、コンテナのネットワーク名前空間だけを変更し、他の名前空間をホストのものと同じものに保ったままにするというようなことです。 (パイプ記号を MOUNT\|PID のようにエスケー プするか、"MOUNT|PID" のように引用符号を付ける必要が>あります。)
- -u user
- 新しいタスクを実行するユーザを指定します。
- -H hostname
- 新しいコンテナ内でのホスト名を設定します。UTSNAME 名前空間を指定している時のみ有効です。
- -i interfacename
- 指定したインターフェースをコンテナ内に移動させます。ネットワーク (NETWORK) 名前空間を指定している時のみ有効です。複数のインターフェースをコンテナに移動させるために複数回指定することも可能です。
- -d
- デーモンにします (コマンドはコンテナの終了を待ちません)。
- -M
- コンテナ内でデフォルトのファイルシステム (/proc, /dev/shm, /dev/mqueue) をマウントします。マウント (MOUNT) 名前空間を指定している時のみ有効です。
例
自身の UTS(hostname)名前空間でシェルを起動するには以下のように実行します。
lxc-unshare -s UTSNAME /bin/bash
もし、そのシェル上でホスト名を変更しても、その変更はホストには反映されません。
新しいネットワーク、pid、マウント名前空間でシェルを起動するには以下のように実行します。
lxc-unshare -s "NETWORK|PID|MOUNT" /bin/bash
その結果起動するシェルは pid が 1 となり、ネットワークインターフェースがないでしょう。 そのシェル上で /proc を再マウントした後
mount -t proc proc /proc
ps の出力は、その名前空間内には他のプロセスが存在しない事を表示するでしょう。
新しいネットワーク、PID、マウント、ホスト名 (UTS) 名前空間でシェルを起動するには、
lxc-unshare -s "NETWORK|PID|MOUNT|UTSNAME" -M -H slave -i veth1 /bin/bash
起動したシェルは PID 1 を持ち、2 つのネットワークインターフェース (lo と veth1) を持ちます。 ホスト名は "slave" となり、/proc は再マウントされます。ps コマンドは、名前空間内には他のプロセスがない状態を表示するでしょう。