]> @LXC_GENERATE_DATE@ lxc-attach 1 lxc-attach 実行中のコンテナ内でプロセスの開始 lxc-attach -n name -a arch -e -s namespaces -R --keep-env --clear-env -- command <!-- Description -->説明 lxc-attachname で指定したコンテナ内で指定した command を実行します。 実行する時点でコンテナが実行中でなければなりません。 もし command が指定されていない場合、lxc-attach コマンドを実行したユーザのデフォルトシェルをコンテナ内で調べて実行します。 もしコンテナ内にユーザが存在しない場合や、コンテナで nsswitch 機構が働いていない場合はこの動作は失敗します。 <!-- Options -->オプション コマンドを実行するコンテナのアーキテクチャを指定します。 このオプションは、コンテナの設定ファイルで指定する オプションと同じものが使用可能です。 lxc.conf 5 を参照してください。デフォルトでは、実行しているコンテナのアーキテクチャになります。 コンテナの内部で command を実行する時に特権を削除しません。 もしこのオプションが指定された場合、新しいプロセスはコンテナの cgroup に追加 されず、実行する前にケーパビリティ (capability) も削除しません。 全ての特権の取得したくない場合は、パイプで連結したリストとして、例えば CGROUP|LSM のように、特権を指定することが可能です。 指定できる値は、それぞれ cgroup、ケーパビリティ、特権の制限を表す CGROUPCAPLSM です。 警告: もし実行するコマンドが、アタッチするメインプロセスが終了した後も実行されたままのサブプロセスを開始するような場合、このオプションの指定はコンテナ内への特権のリークとなる可能性があります。 コンテナ内でのデーモンの開始(もしくは再起動)は問題となります。 デーモンが多数のサブプロセスを開始する cronsshd のような場合は特に問題となります。 充分な注意を払って使用してください。 アタッチする名前空間をパイプで連結したリストで指定します。 例えば NETWORK|IPC のようにです。 ここで使用可能な値は MOUNT, PID, UTSNAME, IPC, USER , NETWORK です。 これにより指定した名前空間にプロセスのコンテキストを変更できます。 例えばコンテナのネットワーク名前空間に変更する一方で、他の名前空間はホストの名前空間のままにするというような事が可能です。 重要: このオプションは オプションを指定しなくても指定している場合と同様の動作をします。 を指定し、そこにマウント名前空間が含まれない時、このオプションにより lxc-attach/proc/sys をリマウントします。 これは現在の他の名前空間のコンテキストを反映させるためです。 もっと詳細な説明は 注意 を参照してください。 このオプションは、マウント名前空間へのアタッチが行われる場合は無視されます。 アタッチされるプログラムに対して現在の環境を保持したままにします。 これは現在 (バージョン 0.9 時点) のデフォルトの動作ですが、将来は変更される予定です。 この動作がコンテナ内への望ましくない情報の漏洩につながる可能性があるためです。 アタッチするプログラムで環境変数が利用可能であることを期待している場合、将来的にもそれが保証されるようにこのオプションを使用するようにしてください。 現在の環境変数に加えて、container=lxc が設定されます。 アタッチする前に環境変数をクリアします。 これによりコンテナへの不要な環境変数の漏洩が起こらなくなります。 変数 container=lxc のみがアタッチするプログラムの開始の時の環境変数となります。 &commonoptions; <!-- Examples -->例 存在するコンテナ内で新しいシェルを生成するには、以下のようにします。 lxc-attach -n container 実行中の Debian コンテナの cron サービスを再起動するには、以下のように実行します。 lxc-attach -n container -- /etc/init.d/cron restart NET_ADMIN ケーパビリティを持たない実行中のコンテナのネットワークインターフェース eth1 の動作を停止させるには、ケーパビリティを増加させるために オプションを指定し、ip ツールがインストールされていることを前提に、以下のように実行します。 lxc-attach -n container -e -- /sbin/ip link delete eth1 <!-- Compatibility -->互換性 (pid とマウント名前空間を含む) コンテナに対する完全なアタッチを行うには 3.8 以上、もしくはパッチを適用したカーネルが必要となります。 詳しくは lxc のウェブサイトを参照してください。 パッチが当たっていない 3.8 より小さなバージョンのカーネルを使った場合は、lxc-attach の実行は失敗するでしょう。 しかし、もし を使用して、アタッチするものを NETWORK, IPC, UTSNAME の 1 つか複数の名前空間に限定して使用すれば、バージョン 3.0 以上のパッチを適用していないカーネルでもアタッチが成功するでしょう。 ユーザ名前空間へのアタッチは、ユーザ名前空間機能を有効にした 3.8 以上のカーネルでサポートされます。 <!-- Notes -->注意 Linux の /proc/sys ファイルシステムは名前空間によって影響を受けるある程度の情報を持っています。 これは /proc 内のプロセス ID の名前のディレクトリや、/sys/class/net 内のネットワークインターフェース名のディレクトリなどです。 擬似ファイルシステムをマウントしているプロセスの名前空間が、どのような情報を表示するかを決定します。 /proc/sys にアクセスしているプロセスの名前空間が決定するのではありません。 を使ってコンテナの pid 名前空間のみをアタッチし、マウント名前空間 (これはコンテナの /proc を含み、ホストのは含まないでしょう) はアタッチしない場合、 のコンテンツはコンテナのものではなく、ホストのものとなります。 似たような事例として、ネットワーク名前空間のみをアタッチして、/sys/class/net のコンテンツを読んだ場合も同じような事が起こるでしょう。 この問題への対処のために、 オプションが /proc/sys が提供されています。 これにより、アタッチするプロセスのネットワーク/pid 名前空間のコンテキストを反映させることができます。ホストの実際のファイルシステムに影響を与えないために、実行前にはマウント名前空間は unshare されます (lxc-unshare のように)。 これは、/proc/sys ファイルシステム以外はホストのマウント名前空間と同じである、新しいマウント名前空間がプロセスに与えられるということです。 <!-- Security -->セキュリティ オプションの使用には注意を払うべきです。 不適切に使用した場合、コンテナの隔離を破壊してしまう可能性があります。 &seealso; <!-- Author -->作者 Daniel Lezcano daniel.lezcano@free.fr