このドキュメントで説明するソフトウェアは、Extended SupportまたはSustaining Supportのいずれかにあります。 詳細は、https://www.oracle.com/us/support/library/enterprise-linux-support-policies-069172.pdfを参照してください。
Oracleでは、このドキュメントに記載されているソフトウェアをできるだけ早くアップグレードすることをお薦めします。

機械翻訳について

8.11 アプリケーション・コンテナの実行

lxc-executeコマンドを使用して、システムの他の部分から効果的に分離された一時アプリケーション・コンテナを作成し、そこでコマンドを実行できます。 たとえば次のコマンドでは、sleepを100秒間実行するguestという名前のアプリケーション・コンテナが作成されます。

[root@host ~]# lxc-execute -n guest -- sleep 100

コンテナがアクティブな間は、別のウィンドウからlxc-ls --activeおよびlxc-info -n guestなどのコマンドを実行して監視できます。

[root@host ~]# lxc-ls --active
guest
[root@host ~]# lxc-info -n guest
state:   RUNNING
pid:      7021

アプリケーション・コンテナをカスタマイズする必要がある場合は、構成ファイルを使用できます。 たとえば、コンテナのネットワーク構成またはマウントされるシステム・ディレクトリを変更できます。

次の例は、lxc-initと特定のライブラリ・パスおよびディレクトリ・パスを使用可能にするマウント・エントリの場合を除き、rootfsがほとんど共有されていないサンプルの構成ファイルからの設定を示しています。

lxc.utsname = guest
lxc.tty = 1
lxc.pts = 1
lxc.rootfs = /tmp/guest/rootfs
lxc.mount.entry=/lib /tmp/guest/rootfs/lib none ro,bind 0 0
lxc.mount.entry=/usr/libexec /tmp/guest/rootfs/usr/lib none ro,bind 0 0
lxc.mount.entry=/lib64 /tmp/guest/rootfs/lib64 none ro,bind 0 0
lxc.mount.entry=/usr/lib64 /tmp/guest/rootfs/usr/lib64 none ro,bind 0 0
lxc.mount.entry=/bin /tmp/guest/rootfs/bin none ro,bind 0 0
lxc.mount.entry=/usr/bin /tmp/guest/rootfs/usr/bin none ro,bind 0 0
lxc.cgroup.cpuset.cpus=1

/usr/libexecのマウント・エントリは、コンテナがホスト・システム上の/usr/libexec/lxc/lxc-initにアクセスできるようにするために必要です。

例に使用されている構成ファイルは、/binおよび/usr/binの両方をマウントします。 実際には、アプリケーション・コンテナでマウントするホスト・システム・ディレクトリを、コンテナがアプリケーションを実行するために必要なディレクトリのみに制限する必要があります。

ノート

システム・コンテナとの競合の可能性を避けるために、/containerディレクトリをアプリケーション・コンテナに使用しないでください。

必要なディレクトリをrootfsディレクトリの下に構成することも必要です。

[root@host ~]# TMPDIR=/tmp/guest/rootfs
[root@host ~]# mkdir -p $TMPDIR/lib $TMPDIR/usr/lib $TMPDIR/lib64 $TMPDIR/usr/lib64 \
$TMPDIR/bin $TMPDIR/usr/bin $TMPDIR/dev/pts $TMPDIR/dev/shm $TMPDIR/proc

この例では、構成ファイルに定義されたマウント・ポイント・エントリに加えて/dev/pts/dev/shmおよび/procもディレクトリに含まれています。

次に、-fオプションを使用してlxc-executeに構成ファイル(config)を指定できます。

[root@host ~]# lxc-execute -n guest -f config -- ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
0            1     0  0 08:56 ?        00:00:00 /usr/lib/lxc/lxc-init -- ps -ef
0            2     1  0 08:56 ?        00:00:00 ps -ef

この例は、psコマンドがlxc-initの子として実行されることを示しています。

システム・コンテナに関しては、cgroupエントリを構成ファイルに設定し、lxc-cgroupコマンドを使用して、アプリケーション・コンテナがアクセスできるシステム・リソースを制御できます。

ノート

lxc-executeは、ホストのrootファイル・システムを共有するアプリケーション・コンテナを実行するためのもので、lxc-createを使用して作成するシステム・コンテナを実行するためのものではありません。 システム・コンテナを実行するにはlxc-startを使用します。

詳細は、lxc-execute(1)およびlxc.conf(5)の各マニュアル・ページを参照してください。