example, a process running as UID and GID 0 inside the container might
appear as UID and GID 100000 on the host. The implementation and working
details can be gathered from the corresponding user namespace man page.
- UID and GID mappings can be defined with the <option>lxc.id_map</option>
+ UID and GID mappings can be defined with the <option>lxc.idmap</option>
key.
-->
本質的には、ユーザ名前空間は与えられた UID、GID の組を隔離します。ユーザ名前空間は、ホスト上の UID、GID のある範囲を、それとは異なるコンテナ上の UID、GID の範囲へマッピングすることで実現します。カーネルは、ホスト上では実際には UID、GID は特権を持たないにも関わらず、コンテナ内ではすべての UID、GID が期待されるように見えるように変換を行います。
- 例えば、コンテナ内では UID、GID が 0 として実行中のプロセスは、ホスト上では UID、GID が 100000 として見えるでしょう。実装と動作の詳細は、ユーザ名前空間の man ページから得られます。UID と GID のマッピングは <option>lxc.id_map</option> を使って定義できます。
+ 例えば、コンテナ内では UID、GID が 0 として実行中のプロセスは、ホスト上では UID、GID が 100000 として見えるでしょう。実装と動作の詳細は、ユーザ名前空間の man ページから得られます。UID と GID のマッピングは <option>lxc.idmap</option> を使って定義できます。
</para>
<para>
LXC namespaces configuration keys by using single dots. This means complex
configuration keys such as <option>lxc.net.0</option> expose various
subkeys such as <option>lxc.net.0.type</option>,
- <option>lxc.net.0.link</option>, <option>lxc.net.0.ipv6</option>, and
+ <option>lxc.net.0.link</option>, <option>lxc.net.0.ipv6.address</option>, and
others for even more fine-grained configuration.
-->
- LXC は、シングルドットを使って設定キーの名前空間を表します。<option>lxc.net.0</option> のような複雑な設定キーは、<option>lxc.net.0.type</option>、<option>lxc.net.0.link</option>、<option>lxc.net.0.ipv6</option> や、さらに細分化された設定向けの色々なサブキーを持つことを意味します。
+ LXC は、シングルドットを使って設定キーの名前空間を表します。<option>lxc.net.0</option> のような複雑な設定キーは、<option>lxc.net.0.type</option>、<option>lxc.net.0.link</option>、<option>lxc.net.0.ipv6.address</option> や、さらに細分化された設定向けの色々なサブキーを持つことを意味します。
</para>
<refsect2>
<para>
<!--
Sets the command to use as the init system for the containers.
-
- This option is ignored when using lxc-execute.
-
- Defaults to: /sbin/init
-->
コンテナの init として使うコマンドを設定します。
- このオプションは lxc-execute では無視されます。
- デフォルトは /sbin/init です。
</para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>lxc.execute.cmd</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Absolute path from container rootfs to the binary to run by default. This
+ mostly makes sense for lxc-execute.
+ -->
+ デフォルトで実行するバイナリのコンテナの root からの絶対パスを指定します。これは <command>lxc-execute</command> のための設定です。
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
<variablelist>
<varlistentry>
<term>
<listitem>
<para>
<!--
- Absolute path from container rootfs to the binary to use as init.
+ Absolute path from container rootfs to the binary to use as init. This
+ mostly makes sense for lxc-start. Default is /sbin/init.
+ -->
+ init として使うバイナリの、コンテナの root からの絶対パスを指定します。これは <command>lxc-start</command> のための設定です。デフォルトは <command>/sbin/init</command> です。
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
+ <refsect2>
+ <title>Init のワーキングディレクトリ <!-- Init working directory --></title>
+ <para>
+ <!--
+ Sets the absolute path inside the container as the working directory for the containers.
+ LXC will switch to this directory before executing init.
+ -->
+ コンテナのワーキングディレクトリとして、コンテナ内の絶対パスを設定します。LXC は init を実行する前に、このディレクトリに移動します。
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>lxc.init.cwd</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Absolute path inside the container to use as the working directory.
-->
- init として使うバイナリの、コンテナの rootfs からの絶対パスを指定します。
+ ワーキングディレクトリとして使うコンテナ内の絶対パス
</para>
</listitem>
</varlistentry>
</variablelist>
</refsect2>
+ <refsect2>
+ <title>Proc</title>
+ <para>
+ <!--
+ Configure proc filesystem for the container.
+ -->
+ コンテナ内の proc ファイルシステムで設定できるパラメータを設定します。
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>lxc.proc.[proc file name]</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Specify the proc file name to be set. The file name available
+ are those listed under /proc/PID/.
+ Example:
+ -->
+ 設定したい proc ファイルシステムのファイル名を指定します。指定できるファイル名は /proc/PID/ 以下に存在するものです。
+ 例:
+ </para>
+ <programlisting>
+ lxc.proc.oom_score_adj = 10
+ </programlisting>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
<refsect2>
<title><!-- Ephemeral -->一時的なコンテナ</title>
<para>
<varlistentry>
<term>
- <option>lxc.net.[i].ipv4</option>
+ <option>lxc.net.[i].ipv4.address</option>
</term>
<listitem>
<para>
<varlistentry>
<term>
- <option>lxc.net.[i].ipv6</option>
+ <option>lxc.net.[i].ipv6.address</option>
</term>
<listitem>
<para>
<listitem>
<para>
<!--
- add a configuration option to specify a script to be
+ Add a configuration option to specify a script to be
executed after creating and configuring the network used
- from the host side. The following arguments are passed
- to the script: container name and config section name
- (net) Additional arguments depend on the config section
- employing a script hook; the following are used by the
- network system: execution context (up), network type
- (empty/veth/macvlan/phys), Depending on the network
- type, other arguments may be passed:
- veth/macvlan/phys. And finally (host-sided) device name.
- -->
- ホスト側から使われる、ネットワークの作成と設定が済んだ後に実行するスクリプトを指定します。以下の引数がスクリプトに渡されます: コンテナ名、設定セクション名(net)。
- その後の引数はスクリプトのフックで使われる設定セクションに依存します。以下がネットワークシステムによって使われます: 実行コンテキスト (up)、ネットワークのタイプ (empty/veth/macvlan/phys)
- ネットワークのタイプによっては、更に別の引数が渡されるかもしれません: veth/macvlan/phys の場合 (ホスト側の) デバイス名
+ from the host side.
+ -->
+ ホスト側から使われる、ネットワークの作成と設定が済んだ後に実行するスクリプトを指定します。
</para>
+
+ <para>
+ <!--
+ In addition to the information available to all hooks. The
+ following information is provided to the script:
+ -->
+ すべてのフックで追加の情報が使えます。以下の情報がスクリプトに提供されます:
+ <itemizedlist>
+ <listitem>
+ <para>
+ LXC_HOOK_TYPE: フックタイプ。'up' か 'down' のいずれかです <!-- the hook type. This is either 'up' or 'down'. -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_HOOK_SECTION: セクションタイプとして 'net' が設定されます<!-- the section type 'net'. -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_NET_TYPE: ネットワークタイプ。有効なネットワークタイプのうちのひとつです (例: 'macvlan', 'veth') <!-- the network type. This is one of the valid
+ network types listed here (e.g. 'macvlan', 'veth'). -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_NET_PARENT: ホスト上の親デバイス名。これはネットワークタイプが 'macvlan'、'veth'、'phys' のどれかのときだけ設定されます <!-- the parent device on the host. This is only
+ set for network types 'mavclan', 'veth', 'phys'. -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_NET_PEER: ホスト上のピアデバイス名。これはネットワークタイプが 'veth' の場合のみ設定されます。この情報は <option>lxc.hook.version</option> が 1 に設定されている場合のみ設定されます
+ <!-- the name of the peer device on the host. This is
+ only set for 'veth' network types. Note that this information
+ is only available when <option>lxc.hook.version</option> is set
+ to 1. -->
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <!--
+ Whether this information is provided in the form of environment
+ variables or as arguments to the script depends on the value of
+ <option>lxc.hook.version</option>. If set to 1 then information is
+ provided in the form of environment variables. If set to 0
+ information is provided as arguments to the script.
+ -->
+ この情報が環境変数の形で提供されるか、スクリプトへの引数の形で提供されるかは <option>lxc.hook.version</option> の値によって決まります。もし <option>lxc.hook.version</option> が 1 に設定されている場合は、環境変数の形で提供されます。もし 0 が設定されている場合は、スクリプトへの引数として提供されます。
+ </para>
+
<para>
<!--
Standard output from the script is logged at debug level.
<listitem>
<para>
<!--
- add a configuration option to specify a script to be
+ Add a configuration option to specify a script to be
executed before destroying the network used from the
- host side. The following arguments are passed to the
- script: container name and config section name (net)
- Additional arguments depend on the config section
- employing a script hook; the following are used by the
- network system: execution context (down), network type
- (empty/veth/macvlan/phys), Depending on the network
- type, other arguments may be passed:
- veth/macvlan/phys. And finally (host-sided) device name.
- -->
- ホスト側から使われる、ネットワークを破壊する前に実行するスクリプトを指定します。以下の引数がスクリプトに渡されます: コンテナ名、設定セクション名(net)。
- その後の引数はスクリプトのフックで使われる設定セクションに依存します。以下がネットワークシステムによって使われます: 実行コンテキスト (up)、ネットワークのタイプ (empty/veth/macvlan/phys)。
- ネットワークのタイプによっては、更に別の引数が渡されるかもしれません: veth/macvlan/phys。そして最後に (ホスト側の) デバイス名が渡されます。
+ host side.
+ -->
+ ホスト側から使われる、ネットワークを破壊する前に実行するスクリプトを指定します。
</para>
+
+ <para>
+ <!--
+ In addition to the information available to all hooks. The
+ following information is provided to the script:
+ -->
+ すべてのフックで追加の情報が使えます。以下の情報がスクリプトに提供されます:
+ <itemizedlist>
+ <listitem>
+ <para>
+ LXC_HOOK_TYPE: フックタイプ。'up' か 'down' のいずれかです <!-- the hook type. This is either 'up' or 'down'. -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_HOOK_SECTION: セクションタイプとして 'net' が設定されます<!-- the section type 'net'. -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_NET_TYPE: ネットワークタイプ。有効なネットワークタイプのうちのひとつです (例: 'macvlan', 'veth') <!-- the network type. This is one of the valid
+ network types listed here (e.g. 'macvlan', 'veth'). -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_NET_PARENT: ホスト上の親デバイス名。これはネットワークタイプが 'macvlan'、'veth'、'phys' のどれかのときだけ設定されます <!-- the parent device on the host. This is only
+ set for network types 'mavclan', 'veth', 'phys'. -->
+ </para>
+ </listitem>
+
+ <listitem>
+ <para>
+ LXC_NET_PEER: ホスト上のピアデバイス名。これはネットワークタイプが 'veth' の場合のみ設定されます。この情報は <option>lxc.hook.version</option> が 1 に設定されている場合のみ設定されます
+ <!-- the name of the peer device on the host. This is
+ only set for 'veth' network types. Note that this information
+ is only available when <option>lxc.hook.version</option> is set
+ to 1. -->
+ </para>
+ </listitem>
+ </itemizedlist>
+
+ <!--
+ Whether this information is provided in the form of environment
+ variables or as arguments to the script depends on the value of
+ <option>lxc.hook.version</option>. If set to 1 then information is
+ provided in the form of environment variables. If set to 0
+ information is provided as arguments to the script.
+ -->
+ この情報が環境変数の形で提供されるか、スクリプトへの引数の形で提供されるかは <option>lxc.hook.version</option> の値によって決まります。もし <option>lxc.hook.version</option> が 1 に設定されている場合は、環境変数の形で提供されます。もし 0 が設定されている場合は、スクリプトへの引数として提供されます。
+ </para>
+
<para>
<!--
Standard output from the script is logged at debug level.
<variablelist>
<varlistentry>
<term>
- <option>lxc.pts</option>
+ <option>lxc.pty.max</option>
</term>
<listitem>
<para>
コンテナでルートファイルシステムを持つように設定されており、inittab ファイルでコンソールの使用が設定されている場合、このコンソールの出力がどこになされるのかを指定したいと思うでしょう。
</para>
<variablelist>
+
+ <varlistentry>
+ <term>
+ <option>lxc.console.buffer.size</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Setting this option instructs liblxc to allocate an in-memory
+ ringbuffer. The container's console output will be written to the
+ ringbuffer. Note that ringbuffer must be at least as big as a
+ standard page size. When passed a value smaller than a single page
+ size liblxc will allocate a ringbuffer of a single page size. A page
+ size is usually 4kB.
+ -->
+ このオプションを設定すると、liblxc はインメモリのリングバッファを割り当てます。コンテナのコンソールはリングバッファに出力されます。リングバッファは少なくとも標準ページサイズの大きさでなければなりません。ページサイズより小さい値を与えた場合は、liblxc はページサイズのリングバッファを割り当てます。ページサイズは通常は 4kB です。
+
+ <!--
+ The keyword 'auto' will cause liblxc to allocate a ringbuffer of
+ 128kB.
+ -->
+ 'auto' を指定すると、liblxc は 128kB のリングバッファを割り当てます。
+
+ <!--
+ When manually specifying a size for the ringbuffer the value should
+ be a power of 2 when converted to bytes. Valid size prefixes are
+ 'kB', 'MB', 'GB'. (Note that all conversions are based on multiples
+ of 1024. That means 'kb' == 'KiB', 'MB' == 'MiB', 'GB' == 'GiB'.)
+ -->
+ リングバッファサイズを数値指定する場合、値がバイトに変換されるときに 2 の累乗になります。サイズ接頭辞付きの単位として 'kB'、'MB'、'GB' が使えます。(この場合の変換は 1024 の倍数に基づいています。つまり 'kB' == 'KiB'、'MB' == 'MiB'、'GB' == 'GiB' という意味です。)
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>lxc.console.buffer.logfile</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Setting this option instructs liblxc to write the in-memory
+ ringbuffer to disk. For performance reasons liblxc will only write
+ the in-memory ringbuffer to disk when requested. Note that the this
+ option is only used by liblxc when
+ <option>lxc.console.buffer.size</option> is set.
+ -->
+ このオプションを設定すると、liblxc はインメモリのリングバッファをディスクに書き込みます。パフォーマンスを考慮して、liblxc は指定をした場合に限り、インメモリのリングバッファをディスクに書き込みます。liblxc はこのオプションを、<option>lxc.console.buffer.size</option> が指定された場合のみ使います。
+
+ <!--
+ By default liblxc will dump the contents of the in-memory ringbuffer
+ to disk when the container terminates. This allows users to diagnose
+ boot failures when the container crashed before an API request to
+ retrieve the in-memory ringbuffer could be sent or handled.
+ -->
+ デフォルトでは liblxc は、コンテナが終了した際にインメモリのリングバッファの内容をディスクに書き出します。これによりユーザは、インメモリのリングバッファを取得する API リクエストが送られたり処理される前に、コンテナがクラッシュした場合、ブートの失敗を調査できます。
+ </para>
+ </listitem>
+ </varlistentry>
+
<varlistentry>
<term>
<option>lxc.console.logfile</option>
<listitem>
<para>
<!--
- Specify a path to a file where the console output will
- be written.
+ Specify a path to a file where the console output will be written.
+ Note that in contrast to the on-disk ringbuffer logfile this file
+ will keep growing potentially filling up the users disks if not
+ rotated and deleted. This problem can also be avoided by using the
+ in-memory ringbuffer options
+ <option>lxc.console.buffer.size</option> and
+ <option>lxc.console.buffer.logfile</option>.
-->
- コンソール出力を書き込むファイルのパスを指定します。
+ コンソール出力を書き込むファイルのパスを指定します。ディスクに保存されるリングバッファログと異なり、このファイルはサイズが大きくなり続けるので、ファイルがローテートや削除されない限りは、ユーザのディスクをいっぱいにしてしまう可能性があります。この問題は、インメモリのリングバッファオプションである、<option>lxc.console.buffer.size</option> と <option>lxc.console.buffer.logfile</option> を使うことでも回避できます。
</para>
</listitem>
</varlistentry>
+
<varlistentry>
<term>
- <option>lxc.console</option>
+ <option>lxc.console.rotate</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Whether to rotate the console logfile specified in
+ <option>lxc.console.logfile</option>. Users can send an API
+ request to rotate the logfile. Note that the old logfile will have
+ the same name as the original with the suffix ".1" appended.
+ -->
+ <option>lxc.console.logfile</option> で指定したコンソールログファイルをローテートするかどうかを指定します。ユーザはログファイルをローテートするように API リクエストを送ることができます。古いログファイルは、元のファイル名と同じ名前のファイルに ".1" というサフィックスが付け加わります。
+
+ <!--
+ Users wishing to prevent the console log file from filling the
+ disk should rotate the logfile and delete it if unneeded. This
+ problem can also be avoided by using the in-memory ringbuffer
+ options <option>lxc.console.buffer.size</option> and
+ <option>lxc.console.buffer.logfile</option>.
+ -->
+ ユーザがコンソールログでディスクがいっぱいになるのを防ぐには、ログファイルをローテートし、不要なログファイルを削除してください。この問題はインメモリのリングバッファオプションである <option>lxc.console.buffer.size</option> と <option>lxc.console.buffer.logfile</option> を使うことでも防げます。
+ </para>
+ </listitem>
+ </varlistentry>
+
+ <varlistentry>
+ <term>
+ <option>lxc.console.path</option>
</term>
<listitem>
<para>
<variablelist>
<varlistentry>
<term>
- <option>lxc.tty</option>
+ <option>lxc.tty.max</option>
</term>
<listitem>
<para>
<variablelist>
<varlistentry>
<term>
- <option>lxc.devttydir</option>
+ <option>lxc.tty.dir</option>
</term>
<listitem>
<para>
</variablelist>
</refsect2>
- <refsect2>
- <title><!-- Enable kmsg symlink -->kmsg のシンボリックリンクの有効化</title>
- <para>
- <!--
- Enable creating /dev/kmsg as symlink to /dev/console. This defaults to 0.
- -->
- /dev/console へのシンボリックリンクとして /dev/kmsg を作成することを有効にします。デフォルトは 0 です。
- </para>
- <variablelist>
- <varlistentry>
- <term>
- <option>lxc.kmsg</option>
- </term>
- <listitem>
- <para>
- <!--
- Set this to 1 to enable /dev/kmsg symlinking.
- -->
- /dev/kmsg へのシンボリックリンクを有効にするには 1 を設定してください。
- </para>
- </listitem>
- </varlistentry>
- </variablelist>
- </refsect2>
-
<refsect2>
<title><!-- Mount points -->マウントポイント</title>
<para>
<variablelist>
<varlistentry>
<term>
- <option>lxc.mount</option>
+ <option>lxc.mount.fstab</option>
</term>
<listitem>
<para>
<option>optional</option> don't fail if mount does not work.
<option>create=dir</option> or <option>create=file</option>
to create dir (or file) when the point will be mounted.
+ <option>relative</option> source path is taken to be relative to
+ the mounted container root. For instance,
-->
fstab フォーマットに加えて、LXC ではマウントに対して独自の 2 つのオプションが使えます。
<option>optional</option> は、マウントが失敗しても失敗を返さずに無視します。
<option>create=dir</option> と <option>create=file</option> は、マウントポイントをマウントする際にディレクトリもしくはファイルを作成します。
+ <option>relative</option> を指定すると、マウントされたコンテナルートからの相対パスとして取得されます。
</para>
+ <screen>
+ dev/null proc/kcore none bind,relative 0 0
+ </screen>
+ <para>
+ <!--
+ Will expand dev/null to ${<option>LXC_ROOTFS_MOUNT</option>}/dev/null,
+ and mount it to proc/kcore inside the container.
+ -->
+ は dev/null を ${<option>LXC_ROOTFS_MOUNT</option>}/dev/null と展開し、コンテナ内の proc/kcore にマウントします。
+ </para>
</listitem>
</varlistentry>
<variablelist>
<varlistentry>
<term>
- <option>lxc.rootfs</option>
+ <option>lxc.rootfs.path</option>
</term>
<listitem>
<para>
<listitem>
<para>
<!--
- where to recursively bind <option>lxc.rootfs</option>
+ where to recursively bind <option>lxc.rootfs.path</option>
before pivoting. This is to ensure success of the
<citerefentry>
<refentrytitle><command>pivot_root</command></refentrytitle>
syscall. Any directory suffices, the default should
generally work.
-->
- root ファイルシステムの変更の前に、<option>lxc.rootfs</option> を再帰的にどこにバインドするのかを指定します。これは
+ root ファイルシステムの変更の前に、<option>lxc.rootfs.path</option> を再帰的にどこにバインドするのかを指定します。これは
<citerefentry>
<refentrytitle><command>pivot_root</command></refentrytitle>
<manvolnum>8</manvolnum>
</listitem>
</varlistentry>
- <varlistentry>
- <term>
- <option>lxc.rootfs.backend</option>
- </term>
- <listitem>
- <para>
- <!--
- specify the rootfs backend type to use, for instance 'dir' or
- 'zfs'. While this can be guessed by lxc at container startup,
- doing so takes time. Specifying it here avoids extra
- processing.
- -->
- 使用するバックエンドのタイプを、例えば 'dir' や 'zfs' のように指定します。
- コンテナ起動時に LXC が推測できますが、時間がかかります。これを指定すると、余分な処理を避けられます。
- </para>
- </listitem>
- </varlistentry>
-
</variablelist>
</refsect2>
</para>
</listitem>
</varlistentry>
+ <varlistentry>
+ <term>
+ <option>lxc.cgroup.dir</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ specify a directory or path in which the container's cgroup will
+ be created. For example, setting
+ <option>lxc.cgroup.dir = my-cgroup/first</option> for a container
+ named "c1" will create the container's cgroup as a sub-cgroup of
+ "my-cgroup". For example, if the user's current cgroup "my-user"
+ is located in the root cgroup of the cpuset controllerin in a
+ cgroup v1 hierarchy this would create the cgroup
+ "/sys/fs/cgroup/cpuset/my-user/my-cgroup/first/c1" for the
+ container. Any missing cgroups will be created by LXC. This
+ presupposes that the user has write access to its current cgroup.
+ -->
+ コンテナの cgroup を作成するパスやディレクトリを指定します。
+ 例えば、"c1" という名前のコンテナで <option>lxc.cgroup.dir = my-cgroup/first</option> のように設定すると、"my-cgroup" のサブ cgroup のようにコンテナの cgroup を作成します。
+ 例えば、ユーザのカレントの cgroup である "my-user" が cgroup v1 階層にある cpuset コントローラの root cgroup 内に存在する場合、この設定は "/sys/fs/cgroup/cpuset/my-user/my-cgroup/first/c1" という cgroup をこのコンテナ向けに作成します。
+ 存在しない cgroup は LXC が作成しますが、ユーザがカレントの cgroup に書き込み権を持っていることが前提となります。
+ </para>
+ </listitem>
+ </varlistentry>
</variablelist>
</refsect2>
</variablelist>
</refsect2>
+ <refsect2>
+ <title>名前空間の継承 <!-- Namespace Inheritance --></title>
+ <para>
+ <!--
+ A namespace can be inherited from another container or process.
+ -->
+ 他のコンテナやプロセスから名前空間を継承できます。
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>lxc.namespace.[namespace identifier]</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Specify a namespace to inherit from another container or process.
+ The <option>[namespace identifier]</option> suffix needs to be
+ replaced with one of the namespaces that appear in the
+ <filename>/proc/PID/ns</filename> directory.
+ -->
+ 他のコンテナやプロセスから継承する名前空間を指定します。<option>[namespace identifier]</option> には、<filename>/proc/PID/ns</filename> ディレクトリ内に現れる名前空間のひとつが入ります。
+ </para>
+
+ <para>
+ <!--
+ To inherit the namespace from another process set the
+ <option>lxc.namespace.[namespace identifier]</option> to the PID of
+ the process, e.g. <option>lxc.namespace.net=42</option>.
+ -->
+ 他のプロセスから名前空間を継承するには、<option>lxc.namespace.[namespace identifier]</option> の値をプロセスの PID に設定します。例えば <option>lxc.namespace.net=42</option> のようになります。
+ </para>
+
+ <para>
+ <!--
+ To inherit the namespace from another container set the
+ <option>lxc.namespace.[namespace identifier]</option> to the name of
+ the container, e.g. <option>lxc.namespace.pid=c3</option>.
+ -->
+ 他のコンテナから名前空間を継承するには、<option>lxc.namespace.[namespace identifier]</option> の値をコンテナ名に設定します。例えば <option>lxc.namespace.pid=c3</option> のようになります。
+ </para>
+
+ <para>
+ <!--
+ To inherit the namespace from another container located in a
+ different path than the standard liblxc path set the
+ <option>lxc.namespace.[namespace identifier]</option> to the full
+ path to the container, e.g.
+ <option>lxc.namespace.user=/opt/c3</option>.
+ -->
+ 標準の liblxc のパスとは異なるコンテナパスに存在する他のコンテナから名前空間を継承するには、<option>lxc.namespace.[namespace identifier]</option> をそのコンテナのフルパスで指定します。例えば <option>lxc.namespace.user=/opt/c3</option> のようになります。
+ </para>
+
+ <para>
+ <!--
+ In order to inherit namespaces the caller needs to have sufficient
+ privilege over the process or container.
+ -->
+ 名前空間を継承するためには、呼び出し元が継承元のプロセスまたはコンテナに対して十分な権限を持っている必要があります。
+ </para>
+
+ <para>
+ <!--
+ Note that sharing pid namespaces between system containers will
+ likely not work with most init systems.
+ -->
+ システムコンテナ間での PID 名前空間の共有は、ほとんどの init システムではうまく動作しない可能性があることに注意が必要です。
+ </para>
+
+ <para>
+ <!--
+ Note that if two processes are in different user namespaces and one
+ process wants to inherit the other's network namespace it usually
+ needs to inherit the user namespace as well.
+ -->
+ ふたつのプロセスが異なるユーザ名前空間に存在し、そのうちのひとつが他のネットワーク名前空間を継承したい場合、通常はユーザ名前空間も同様に継承する必要があることに注意が必要です。
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
<refsect2>
<title>リソース制限 <!-- Resource limits --></title>
<para>
</variablelist>
</refsect2>
+ <refsect2>
+ <title>Sysctl</title>
+ <para>
+ <!--
+ Configure kernel parameters for the container.
+ -->
+ コンテナ用のカーネルパラメータを設定します。
+ </para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>lxc.sysctl.[kernel parameters name]</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ Specify the kernel parameters to be set. The parameters available
+ are those listed under /proc/sys/.
+ Note that not all sysctls are namespaced. Changing Non-namespaced
+ sysctls will cause the system-wide setting to be modified.
+ -->
+ 設定したいカーネルパラメータを指定します。指定できるパラメータは /proc/sys 以下に存在するものです。
+ すべての sysctl パラメータが仮想化(名前空間化)されているわけではないことに注意してください。仮想化されていない sysctl を設定すると、システムワイドで設定が変更されてしまいます。
+ <citerefentry>
+ <refentrytitle><command>sysctl</command></refentrytitle>
+ <manvolnum>8</manvolnum>
+ </citerefentry>.
+ <!--
+ If used with no value, lxc will clear the parameters specified up
+ to this point.
+ -->
+ 値を指定しないでこの設定を指定した場合は、この設定より前に設定されたパラメータをクリアします。
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
+ </refsect2>
+
<refsect2>
<title><!-- Apparmor profile -->Apparmor プロファイル</title>
<para>
<variablelist>
<varlistentry>
<term>
- <option>lxc.aa_profile</option>
+ <option>lxc.apparmor.profile</option>
</term>
<listitem>
<para>
コンテナが従うべき apparmor プロファイルを指定します。
コンテナが apparmor による制限を受けないように設定するには、以下のように設定します。
</para>
- <programlisting>lxc.aa_profile = unconfined</programlisting>
+ <programlisting>lxc.apparmor.profile = unconfined</programlisting>
<para>
<!--
If the apparmor profile should remain unchanged (i.e. if you
-->
もし apparmor プロファイルが変更されないままでなくてはならない場合 (ネストしたコンテナである場合や、すでに confined されている場合) は以下のように設定します。
</para>
- <programlisting>lxc.aa_profile = unchanged</programlisting>
+ <programlisting>lxc.apparmor.profile = unchanged</programlisting>
</listitem>
</varlistentry>
<varlistentry>
<term>
- <option>lxc.aa_allow_incomplete</option>
+ <option>lxc.apparmor.allow_incomplete</option>
</term>
<listitem>
<para>
<variablelist>
<varlistentry>
<term>
- <option>lxc.se_context</option>
+ <option>lxc.selinux.context</option>
</term>
<listitem>
<para>
-->
コンテナが従うべき SELinux コンテキストを指定するか、<command>unconfined_t</command> を指定します。例えば以下のように設定します。
</para>
- <programlisting>lxc.se_context = system_u:system_r:lxc_t:s0:c22</programlisting>
+ <programlisting>lxc.selinux.context = system_u:system_r:lxc_t:s0:c22</programlisting>
</listitem>
</varlistentry>
</variablelist>
<variablelist>
<varlistentry>
<term>
- <option>lxc.seccomp</option>
+ <option>lxc.seccomp.profile</option>
</term>
<listitem>
<para>
<variablelist>
<varlistentry>
<term>
- <option>lxc.id_map</option>
+ <option>lxc.idmap</option>
</term>
<listitem>
<para>
<!--
Container hooks are programs or scripts which can be executed
at various times in a container's lifetime.
- -->
+ -->
コンテナのフックは、コンテナの存続期間の色々な場面で実行することのできるプログラムやスクリプトです。
</para>
<para>
<!--
- When a container hook is executed, information is passed both
- as command line arguments and through environment variables.
- The arguments are:
+ When a container hook is executed, additional information is passed
+ along. The <option>lxc.hook.version</option> argument can be used to
+ determine if the following arguments are passed as command line
+ arguments or through environment variables. The arguments are:
+ -->
+ コンテナフックが実行されるとき、追加の情報が渡されます。追加の引数がコマンドライン引数で渡されるか、環境変数経由で渡されるかを判断するのに、<option>lxc.hook.version</option> が使えます。引数は:
<itemizedlist>
- <listitem><para> Container name. </para></listitem>
- <listitem><para> Section (always 'lxc'). </para></listitem>
- <listitem><para> The hook type (i.e. 'clone' or 'pre-mount'). </para></listitem>
- <listitem><para> Additional arguments. In the
+ <listitem><para> コンテナ名 <!-- Container name.--></para></listitem>
+ <listitem><para> セクション (常に 'lxc') <!-- Section (always 'lxc'). --></para></listitem>
+ <listitem><para> フックのタイプ ('clone' や 'pre-mount' など) <!-- The hook type (i.e. 'clone' or 'pre-mount'). --></para></listitem>
+ <listitem><para> 追加の引数。clone フックの場合、lxc-clone に渡される追加の引数は、フックへの引数として追加されます。stop フックの場合は、コンテナの名前空間のそれぞれに対するファイルディスクリプタへのパスが、名前空間名とともに渡されます。 <!-- Additional arguments. In the
case of the clone hook, any extra arguments passed to
lxc-clone will appear as further arguments to the hook.
In the case of the stop hook, paths to filedescriptors
for each of the container's namespaces along with their types
- are passed. </para></listitem>
+ are passed. --></para></listitem>
</itemizedlist>
+ <!--
The following environment variables are set:
+ -->
+ 次の環境変数がセットされます。
<itemizedlist>
- <listitem><para> LXC_NAME: is the container's name. </para></listitem>
- <listitem><para> LXC_ROOTFS_MOUNT: the path to the mounted root filesystem. </para></listitem>
- <listitem><para> LXC_CONFIG_FILE: the path to the container configuration file. </para></listitem>
- <listitem><para> LXC_SRC_NAME: in the case of the clone hook, this is the original container's name. </para></listitem>
- <listitem><para> LXC_ROOTFS_PATH: this is the lxc.rootfs entry for the container. Note this is likely not where the mounted rootfs is to be found, use LXC_ROOTFS_MOUNT for that. </para></listitem>
- </itemizedlist>
- -->
- コンテナのフックが実行されるとき、情報がコマンドライン引数と環境変数の両方を通して渡されます。引数は:
- <itemizedlist>
- <listitem><para>コンテナ名</para></listitem>
- <listitem><para>セクション (常に 'lxc')</para></listitem>
- <listitem><para>フックのタイプ ('clone' や 'pre-mount' など)</para></listitem>
- <listitem><para>追加の引数。clone フックの場合、lxc-clone に渡される追加の引数は、フックへの引数として追加されます。stop フックの場合は、コンテナの名前空間のそれぞれに対するファイルディスクリプタへのパスが、名前空間名とともに渡されます。</para></listitem>
- </itemizedlist>
- 以下の環境変数がセットされます。
- <itemizedlist>
- <listitem><para> LXC_NAME: コンテナ名</para></listitem>
- <listitem><para> LXC_ROOTFS_MOUNT: マウントされた root ファイルシステムへのパス</para></listitem>
- <listitem><para> LXC_CONFIG_FILE: コンテナの設定ファイルのパス </para></listitem>
- <listitem><para> LXC_SRC_NAME: clone フックの場合、元のコンテナの名前</para></listitem>
- <listitem><para> LXC_ROOTFS_PATH: コンテナの lxc.rootfs エントリ。これはマウントされた rootfs が存在する場所にはならないでしょう。それには LXC_ROOTFS_MOUNT を使用してください。</para></listitem>
+ <listitem><para> LXC_CGNS_AWARE: コンテナで cgroup namespace が使えるかどうか <!-- indicator whether the container is
+ cgroup namespace aware. --></para></listitem>
+ <listitem><para> LXC_CONFIG_FILE: コンテナの設定ファイルのパス <!-- the path to the container
+ configuration file. --></para></listitem>
+ <listitem><para> LXC_HOOK_TYPE: フックのタイプ (例えば 'clone'、'mount'、'pre-mount')。この環境変数が存在するかどうかは <option>lxc.hook.version</option> の値次第です。この値が 1 なら、LXC_HOOK_TYPE が設定されています。
+ <!-- the hook type (e.g. 'clone', 'mount',
+ 'pre-mount'). Note that the existence of this environment variable is
+ conditional on the value of <option>lxc.hook.version</option>. If it
+ is set to 1 then LXC_HOOK_TYPE will be set. -->
+ </para></listitem>
+ <listitem><para> LXC_HOOK_SECTION: セクションタイプ (例えば 'lxc'、'net')。この環境変数が存在するかどうかは <option>lxc.hook.version</option> の値次第です。この値が 1 なら、LXC_HOOK_TYPE が設定されています。
+ <!-- the section type (e.g. 'lxc',
+ 'net'). Note that the existence of this environment variable is
+ conditional on the value of <option>lxc.hook.version</option>. If it
+ is set to 1 then LXC_HOOK_SECTION will be set. -->
+ </para></listitem>
+ <listitem><para> LXC_HOOK_VERSION: フックのバージョン。この値は、コンテナの <option>lxc.hook.version</option> の値と同じです。もし、この値が 0 に設定されているなら、古いスタイルのフックが使われます。もし 1 に設定されているなら、新しいスタイルのフックが使われます。
+ <!-- the version of the hooks. This
+ value is identical to the value of the container's
+ <option>lxc.hook.version</option> config item. If it is set to 0 then
+ old-style hooks are used. If it is set to 1 then new-style hooks are
+ used. --></para></listitem>
+ <listitem><para> LXC_LOG_LEVEL: コンテナのログレベル <!-- the container's log level. --></para></listitem>
+ <listitem><para> LXC_NAME: コンテナ名 <!-- is the container's name. --></para></listitem>
+ <listitem><para> LXC_[NAMESPACE IDENTIFIER]_NS: コンテナの名前空間が参照する /proc/PID/fd/ 以下のファイルディスクリプタのパス。それぞれの名前空間ごとに別々の環境変数になります。これらの環境変数は <option>lxc.hook.version</option> が 1 に設定されてる場合のみ設定されます。
+ <!-- path under
+ /proc/PID/fd/ to a file descriptor referring to the container's
+ namespace. For each preserved namespace type there will be a separate
+ environment variable. These environment variables will only be set if
+ <option>lxc.hook.version</option> is set to 1. --></para></listitem>
+ <listitem><para> LXC_ROOTFS_MOUNT: マウントされた root ファイルシステムへのパス <!-- the path to the mounted root filesystem. --></para></listitem>
+ <listitem><para> LXC_ROOTFS_PATH: コンテナの lxc.rootfs.path エントリ。これはマウントされた rootfs が存在する場所にはならないでしょう。それには LXC_ROOTFS_MOUNT を使用してください。 <!-- this is the lxc.rootfs.path entry
+ for the container. Note this is likely not where the mounted rootfs is
+ to be found, use LXC_ROOTFS_MOUNT for that. --></para></listitem>
+ <listitem><para> LXC_SRC_NAME: clone フックの場合、元のコンテナの名前 <!-- in the case of the clone hook, this is
+ the original container's name. --></para></listitem>
</itemizedlist>
</para>
<para>
Standard output from the hooks is logged at debug level.
Standard error is not logged, but can be captured by the
hook redirecting its standard error to standard output.
- -->
+ -->
スクリプトからの標準出力は debug レベルでロギングされます。
標準エラー出力はロギングされません。
しかし、フックの標準エラー出力を標準出力にリダイレクトすることにより保存することは可能です。
</para>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>lxc.hook.version</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ To pass the arguments in new style via environment variables set to
+ 1 otherwise set to 0 to pass them as arguments.
+ This setting affects all hooks arguments that were traditionally
+ passed as arguments to the script. Specifically, it affects the
+ container name, section (e.g. 'lxc', 'net') and hook type (e.g.
+ 'clone', 'mount', 'pre-mount') arguments. If new-style hooks are
+ used then the arguments will be available as environment variables.
+ The container name will be set in LXC_NAME. (This is set
+ independently of the value used for this config item.) The section
+ will be set in LXC_HOOK_SECTION and the hook type will be set in
+ LXC_HOOK_TYPE.
+ It also affects how the paths to file descriptors referring to the
+ container's namespaces are passed. If set to 1 then for each
+ namespace a separate environment variable LXC_[NAMESPACE
+ IDENTIFIER]_NS will be set. If set to 0 then the paths will be
+ passed as arguments to the stop hook.
+ -->
+ 環境変数経由の新しいスタイルで引数を渡すには 1 に設定します。そうでなく、引数として渡すには 0 に設定します。この設定は、古い方法でスクリプトに引数として渡されているすべてのフック引数に影響します。特に、コンテナ名のセクション (例: 'lxc', 'net') とフックタイプ (例: 'clone', 'mount', 'pre-mount') 引数に影響します。新しいスタイルのフックが使われる場合、引数は環境変数として利用できます。
+ コンテナ名は LXC_NAME に設定されます(これはこの設定項目に設定されている値とは関係なく設定されます)。セクションは LXC_HOOK_SECTION に設定されます。そしてフックタイプは LXC_HOOK_TYPE に設定されます。
+ この設定は、コンテナの名前空間を参照するファイルディスクリプタのパスをどのように渡すかにも影響します。1 に設定した場合、名前空間ごとに別の環境変数 LXC_[NAMESPACE IDENTIFIER]_NS に設定されます。0 に設定すると、パスは stop フックの引数として渡されます。
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
<variablelist>
<varlistentry>
<term>
</listitem>
</varlistentry>
</variablelist>
+ <variablelist>
+ <varlistentry>
+ <term>
+ <option>lxc.hook.start-host</option>
+ </term>
+ <listitem>
+ <para>
+ <!--
+ A hook to be run in the host's namespace after the
+ container has been setup, and immediately before starting
+ the container init.
+ -->
+ コンテナのセットアップが済んだあと、コンテナの init を実行する直前に、ホストの名前空間で実行するためのフックです。
+ </para>
+ </listitem>
+ </varlistentry>
+ </variablelist>
<variablelist>
<varlistentry>
<term>
<para>
<!--
The path to the console output of the container if not NULL.
- [<option>-c</option>] [<option>lxc.console</option>]
+ [<option>-c</option>] [<option>lxc.console.path</option>]
-->
設定されている場合のコンテナのコンソール出力のパス。
- [<option>-c</option>] [<option>lxc.console</option>]
+ [<option>-c</option>] [<option>lxc.console.path</option>]
</para>
</listitem>
</varlistentry>
<!--
The host relative path to the container root which has been
mounted to the rootfs.mount location.
- [<option>lxc.rootfs</option>]
+ [<option>lxc.rootfs.path</option>]
-->
rootfs.mount へマウントされるコンテナのルートへのホスト上のパスです。
- [<option>lxc.rootfs</option>]
+ [<option>lxc.rootfs.path</option>]
</para>
</listitem>
</varlistentry>
</varlistentry>
<varlistentry>
<term>
- <option>lxc.log</option>
+ <option>lxc.log.file</option>
</term>
<listitem>
<para>
lxc.net.0.link = br0
lxc.net.0.name = eth0
lxc.net.0.hwaddr = 4a:49:43:49:79:bf
- lxc.net.0.ipv4 = 1.2.3.5/24 1.2.3.255
- lxc.net.0.ipv6 = 2003:db8:1:0:214:1234:fe0b:3597
+ lxc.net.0.ipv4.address = 1.2.3.5/24 1.2.3.255
+ lxc.net.0.ipv6.address = 2003:db8:1:0:214:1234:fe0b:3597
</programlisting>
</refsect2>
この設定は、コンテナ内のユーザとグループ両方の id 0-9999 の範囲を、ホスト上の 100000-109999 へマッピングします。
</para>
<programlisting>
- lxc.id_map = u 0 100000 10000
- lxc.id_map = g 0 100000 10000
+ lxc.idmap = u 0 100000 10000
+ lxc.idmap = g 0 100000 10000
</programlisting>
</refsect2>
lxc.net.0.flags = up
lxc.net.0.link = br0
lxc.net.0.hwaddr = 4a:49:43:49:79:bf
- lxc.net.0.ipv4 = 10.2.3.5/24 10.2.3.255
- lxc.net.0.ipv6 = 2003:db8:1:0:214:1234:fe0b:3597
- lxc.net.0.ipv6 = 2003:db8:1:0:214:5432:feab:3588
+ lxc.net.0.ipv4.address = 10.2.3.5/24 10.2.3.255
+ lxc.net.0.ipv6.address = 2003:db8:1:0:214:1234:fe0b:3597
+ lxc.net.0.ipv6.address = 2003:db8:1:0:214:5432:feab:3588
lxc.net.1.type = macvlan
lxc.net.1.flags = up
lxc.net.1.link = eth0
lxc.net.1.hwaddr = 4a:49:43:49:79:bd
- lxc.net.1.ipv4 = 10.2.3.4/24
- lxc.net.1.ipv4 = 192.168.10.125/24
- lxc.net.1.ipv6 = 2003:db8:1:0:214:1234:fe0b:3596
+ lxc.net.1.ipv4.address = 10.2.3.4/24
+ lxc.net.1.ipv4.address = 192.168.10.125/24
+ lxc.net.1.ipv6.address = 2003:db8:1:0:214:1234:fe0b:3596
lxc.net.2.type = phys
lxc.net.2.flags = up
lxc.net.2.link = dummy0
lxc.net.2.hwaddr = 4a:49:43:49:79:ff
- lxc.net.2.ipv4 = 10.2.3.6/24
- lxc.net.2.ipv6 = 2003:db8:1:0:214:1234:fe0b:3297
+ lxc.net.2.ipv4.address = 10.2.3.6/24
+ lxc.net.2.ipv6.address = 2003:db8:1:0:214:1234:fe0b:3297
lxc.cgroup.cpuset.cpus = 0,1
lxc.cgroup.cpu.shares = 1234
lxc.cgroup.devices.deny = a
lxc.cgroup.devices.allow = c 1:3 rw
lxc.cgroup.devices.allow = b 8:0 rw
- lxc.mount = /etc/fstab.complex
+ lxc.mount.fstab = /etc/fstab.complex
lxc.mount.entry = /lib /root/myrootfs/lib none ro,bind 0 0
- lxc.rootfs = /mnt/rootfs.complex
+ lxc.rootfs.path = dir:/mnt/rootfs.complex
lxc.cap.drop = sys_module mknod setuid net_raw
lxc.cap.drop = mac_override
</programlisting>