'\" -*- coding: UTF-8 -*- .if \n(.g .ds T< \\FC .if \n(.g .ds T> \\F[\n[.fam]] .de URL \\$2 \(la\\$1\(ra\\$3 .. .if \n(.g .mso www.tmac .TH lxc-attach 1 "Sat Apr 29 06:45:43 UTC 2017" "" "" .SH NAME lxc-attach \- 実行中のコンテナ内でプロセスの開始 .SH SYNOPSIS 'nh .fi .ad l \fBlxc-attach\fR \kx .if (\nx>(\n(.l/2)) .nr x (\n(.l/5) 'in \n(.iu+\nxu {-n \fIname\fR} [-a \fIarch\fR] [-e] [-s \fInamespaces\fR] [-R] [--keep-env] [--clear-env] [-- \fIcommand\fR] 'in \n(.iu-\nxu .ad b 'hy .SH 説明 \fBlxc-attach\fR は \fIname\fR で指定したコンテナ内で指定した \fIcommand\fR を実行します。 実行する時点でコンテナが実行中でなければなりません。 .PP もし \fIcommand\fR が指定されていない場合、\fBlxc-attach\fR コマンドを実行したユーザのデフォルトシェルをコンテナ内で調べて実行します。 もしコンテナ内にユーザが存在しない場合や、コンテナで nsswitch 機構が働いていない場合はこの動作は失敗します。 .SH オプション .TP \*(T<\fB\-a, \-\-arch \fR\*(T>\fIarch\fR コマンドを実行するコンテナのアーキテクチャを指定します。 このオプションは、コンテナの設定ファイルで指定する \*(T<\fBlxc.arch\fR\*(T> オプションと同じものが使用可能です。 \fB\*(T<\fIlxc.conf\fR\*(T>\fR(5) を参照してください。デフォルトでは、実行しているコンテナのアーキテクチャになります。 .TP \*(T<\fB\-e, \-\-elevated\-privileges \fR\*(T>\fIprivileges\fR\*(T<\fB \fR\*(T> コンテナの内部で \fIcommand\fR を実行する時に特権を削除しません。 もしこのオプションが指定された場合、新しいプロセスはコンテナの cgroup に追加 \fIされず\fR、実行する前にケーパビリティ (capability) も削除しません。 全ての特権の取得したくない場合は、パイプで連結したリストとして、例えば \fICGROUP|LSM\fR のように、特権を指定することが可能です。 指定できる値は、それぞれ cgroup、ケーパビリティ、特権の制限を表す \fICGROUP\fR、\fICAP\fR、\fILSM\fR です。 \fI警告:\fR もし実行するコマンドが、アタッチするメインプロセスが終了した後も実行されたままのサブプロセスを開始するような場合、このオプションの指定はコンテナ内への特権のリークとなる可能性があります。 コンテナ内でのデーモンの開始(もしくは再起動)は問題となります。 デーモンが多数のサブプロセスを開始する \fBcron\fR や \fBsshd\fR のような場合は特に問題となります。 \fI充分な注意を払って使用してください。\fR .TP \*(T<\fB\-s, \-\-namespaces \fR\*(T>\fInamespaces\fR アタッチする名前空間をパイプで連結したリストで指定します。 例えば \fINETWORK|IPC\fR のようにです。 ここで使用可能な値は \fIMOUNT\fR, \fIPID\fR, \fIUTSNAME\fR, \fIIPC\fR, \fIUSER \fR, \fINETWORK\fR です。 これにより指定した名前空間にプロセスのコンテキストを変更できます。 例えばコンテナのネットワーク名前空間に変更する一方で、他の名前空間はホストの名前空間のままにするというような事が可能です。 \fI重要:\fR このオプションは \*(T<\fB\-e\fR\*(T> オプションを指定しなくても指定している場合と同様の動作をします。 .TP \*(T<\fB\-R, \-\-remount\-sys\-proc\fR\*(T> \*(T<\fB\-s\fR\*(T> を指定し、そこにマウント名前空間が含まれない時、このオプションにより \fBlxc-attach\fR は \fI/proc\fR と \fI/sys\fR をリマウントします。 これは現在の他の名前空間のコンテキストを反映させるためです。 もっと詳細な説明は \fI注意\fR を参照してください。 このオプションは、マウント名前空間へのアタッチが行われる場合は無視されます。 .TP \*(T<\fB\-\-keep\-env\fR\*(T> アタッチされるプログラムに対して現在の環境を保持したままにします。 これは現在 (バージョン 0.9 時点) のデフォルトの動作ですが、将来は変更される予定です。 この動作がコンテナ内への望ましくない情報の漏洩につながる可能性があるためです。 アタッチするプログラムで環境変数が利用可能であることを期待している場合、将来的にもそれが保証されるようにこのオプションを使用するようにしてください。 現在の環境変数に加えて、container=lxc が設定されます。 .TP \*(T<\fB\-\-clear\-env\fR\*(T> アタッチする前に環境変数をクリアします。 これによりコンテナへの不要な環境変数の漏洩が起こらなくなります。 変数 container=lxc のみがアタッチするプログラムの開始の時の環境変数となります。 .SH 共通オプション ここで紹介するオプションは lxc コマンドの大部分で共通のものです。 .TP \*(T<\fB\-?, \-h, \-\-help\fR\*(T> 通常より長い使い方のメッセージを表示します。 .TP \*(T<\fB\-\-usage\fR\*(T> 使い方を表示します。 .TP \*(T<\fB\-q, \-\-quiet\fR\*(T> 出力を抑制します。 .TP \*(T<\fB\-P, \-\-lxcpath=\fR\*(T>\fIPATH\fR デフォルトと別のコンテナパスを使用します。デフォルトは /var/lib/lxc です。 .TP \*(T<\fB\-o, \-\-logfile=\fR\*(T>\fIFILE\fR 追加のログを \fIFILE\fR に出力します。デフォルトは出力しません。 .TP \*(T<\fB\-l, \-\-logpriority=\fR\*(T>\fILEVEL\fR ログの優先度を \fILEVEL\fR に設定します。デフォルトの優先度は \*(T です。以下の値を設定可能です: \*(T, \*(T, \*(T, \*(T, \*(T, \*(T, \*(T。 このオプションは追加のログファイルへのイベントログの優先度の設定である事に注意してください。stderr への ERROR イベントのログには影響しません。 .TP \*(T<\fB\-n, \-\-name=\fR\*(T>\fINAME\fR \fINAME\fR という名前でコンテナを識別します。コンテナ識別子のフォーマットは英数字の文字列です。 .SH 例 存在するコンテナ内で新しいシェルを生成するには、以下のようにします。 .nf \*(T< lxc\-attach \-n container \*(T> .fi .PP 実行中の Debian コンテナの cron サービスを再起動するには、以下のように実行します。 .nf \*(T< lxc\-attach \-n container \-\- /etc/init.d/cron restart \*(T> .fi .PP NET_ADMIN ケーパビリティを持たない実行中のコンテナのネットワークインターフェース eth1 の動作を停止させるには、ケーパビリティを増加させるために \*(T<\fB\-e\fR\*(T> オプションを指定し、\fBip\fR ツールがインストールされていることを前提に、以下のように実行します。 .nf \*(T< lxc\-attach \-n container \-e \-\- /sbin/ip link delete eth1 \*(T> .fi .SH 互換性 (pid とマウント名前空間を含む) コンテナに対する完全なアタッチを行うには 3.8 以上、もしくはパッチを適用したカーネルが必要となります。 詳しくは lxc のウェブサイトを参照してください。 パッチが当たっていない 3.8 より小さなバージョンのカーネルを使った場合は、\fBlxc-attach\fR の実行は失敗するでしょう。 .PP しかし、もし \*(T<\fB\-s\fR\*(T> を使用して、アタッチするものを \fINETWORK\fR, \fIIPC\fR, \fIUTSNAME\fR の 1 つか複数の名前空間に限定して使用すれば、バージョン 3.0 以上のパッチを適用していないカーネルでもアタッチが成功するでしょう。 .PP ユーザ名前空間へのアタッチは、ユーザ名前空間機能を有効にした 3.8 以上のカーネルでサポートされます。 .SH 注意 Linux の \fI/proc\fR と \fI/sys\fR ファイルシステムは名前空間によって影響を受けるある程度の情報を持っています。 これは \fI/proc\fR 内のプロセス ID の名前のディレクトリや、\fI/sys/class/net\fR 内のネットワークインターフェース名のディレクトリなどです。 擬似ファイルシステムをマウントしているプロセスの名前空間が、どのような情報を表示するかを決定します。 \fI/proc\fR や \fI/sys\fR にアクセスしているプロセスの名前空間が決定するのではありません。 .PP \*(T<\fB\-s\fR\*(T> を使ってコンテナの pid 名前空間のみをアタッチし、マウント名前空間 (これはコンテナの \fI/proc\fR を含み、ホストのは含まないでしょう) はアタッチしない場合、\*(T<\fB/proc\fR\*(T> のコンテンツはコンテナのものではなく、ホストのものとなります。 似たような事例として、ネットワーク名前空間のみをアタッチして、\fI/sys/class/net\fR のコンテンツを読んだ場合も同じような事が起こるでしょう。 .PP この問題への対処のために、\*(T<\fB\-R\fR\*(T> オプションが \fI/proc\fR と \fI/sys\fR が提供されています。 これにより、アタッチするプロセスのネットワーク/pid 名前空間のコンテキストを反映させることができます。ホストの実際のファイルシステムに影響を与えないために、実行前にはマウント名前空間は unshare されます (\fBlxc-unshare\fR のように)。 これは、\fI/proc\fR と \fI/sys\fR ファイルシステム以外はホストのマウント名前空間と同じである、新しいマウント名前空間がプロセスに与えられるということです。 .SH セキュリティ \*(T<\fB\-e\fR\*(T> と \*(T<\fB\-s\fR\*(T> オプションの使用には注意を払うべきです。 不適切に使用した場合、コンテナの隔離を破壊してしまう可能性があります。 .SH "SEE ALSO" \fBlxc\fR(7), \fBlxc-create\fR(1), \fBlxc-destroy\fR(1), \fBlxc-start\fR(1), \fBlxc-stop\fR(1), \fBlxc-execute\fR(1), \fBlxc-console\fR(1), \fBlxc-monitor\fR(1), \fBlxc-wait\fR(1), \fBlxc-cgroup\fR(1), \fBlxc-ls\fR(1), \fBlxc-info\fR(1), \fBlxc-freeze\fR(1), \fBlxc-unfreeze\fR(1), \fBlxc-attach\fR(1), \fBlxc.conf\fR(5) .SH 作者 Daniel Lezcano <\*(T>