LXC 1.
LXC 1.
1.
今回はLXC 1.
ディレクトリのinclude
LXCの設定ファイルでは、lxc.
を用いて、
LXC 1.lxc.
にディレクトリを指定できるようになりました。
たとえば、common.
では、
lxc.include = /usr/share/lxc/config/common.conf.d/
ここに設定したい内容を書いたファイルを置けば、
UbuntuにLXC 1.
コンテナがinitとして実行するプログラム
コンテナを起動する際に使うlxc-start
コマンドで、lxc-start
は、/sbin/
をコマンドとして実行するためでした。
一方lxc-start
コマンドを実行する際に、
$ sudo lxc-start -n ct01 -F -- /bin/bash
:(略)
root@ct01:/#
LXC 1.lxc-start
が実行するコマンドが設定で指定できるようになりました。上記の例と同じ指定を設定ファイルで行う場合は、
lxc.init_cmd = /bin/bash
lxc-start
を実行すると、
$ sudo grep lxc.init_cmd /var/lib/lxc/ct01/config
lxc.init_cmd = /bin/bash
$ sudo lxc-start -n ct01 -F
:(略)
root@ct01:/#
柔軟なlxc.cap.keepの設定
第12回で紹介したlxc.
は、
この設定にnone
というキーワードを指定できるようになりました。
LXCは設定ファイルを順に読んでいきますので、lxc.
にnone
を設定すると、lxc.
に指定すれば、
lxc.
などを使って、
lxc.cap.keep = none # この設定以前に許可されていたケーパビリティをすべて削除
lxc.cap.keep = net_admin # 許可したいケーパビリティを指定
以上の設定でCAP_
のみが許可されたコンテナになります。lxc.
の最後にnone
が設定されると、
これまでは紹介していませんでしたが、
lxc.cap.drop = mac_admin mac_override sys_time sys_module
lxc.cap.drop =
ケーパビリティを削除する場合のlxc.
では、lxc.
では、
この設定をクリアする方法はlxc.
でも使えます。しかし、lxc.
の設定をクリアすると、
lxc.
にnone
が指定できるようになり、
コンテナのinitへ渡す環境変数
LXC 1.lxc.
という設定が追加され、
$ sudo grep lxc.environment /var/lib/lxc/ct01/config lxc.environment = APP_ENV=production
たとえば、APP_
という環境変数にproduction
という値を設定するように指示してみましょう。そして、
$ sudo lxc-start -n ct01
$ sudo lxc-attach -n ct01 -- sed -e 's/\x0/\n/g' /proc/1/environ
(environファイルは環境変数をNULL区切りで格納しているので改行に置き換えて表示)
APP_ENV=production
container=lxc
container_ttys=/dev/pts/0 /dev/pts/1 /dev/pts/2 /dev/pts/3
以上のように、lxc.
で設定したAPP_
という環境変数が設定されています。
このlxc.
を使うと、
ちなみに、container
とcontainer_
はLXCが内部的に設定している環境変数です。
LXC 1.container
にlxc
という値が設定されているだけでした。Ubuntuの起動スクリプトでは、
container_
という環境変数はLXC 1.
lxc.pivotdirの無効化
LXC 1.lxc.
という設定の値を使用していました。
LXC 1.lxc.
の値は使われなくなりました。
lxc.
を設定してもエラーにはなりませんが、
lxc.autodev処理の変更
lxc.
は、/dev
以下に最小限必要なデバイスファイルを作成するための設定です。
LXC 1.lxc.
はデフォルトで0/dev/
以下にコンテナ用のディレクトリを作成し、/dev
にバインドマウントするというような処理を行っていました。
LXC 1.lxc.
の処理が書き直され、/dev
はtmpfsでマウントされ、
LXC 1.lxc.
を使用すると問題が起こっていたようですが、lxc.
はデフォルトでは1
これに伴い、lxc.
が1で動作するように修正が行われています。
lxc.kmsgのデフォルト値の変更
lxc.
は、/dev/
を/dev/
へのシンボリックリンクとするための設定です。
1.lxc.
のデフォルト値は1
このようなリンクは有害であると指摘されていたようですし、
lxc.mount.auto の sys の変更
lxc.
は第11回で説明した通り、
それぞれのファイルシステムをマウントする際のオプションが指定でき、
オプションは読み込み専用のro
、rw
、mixed
の中から選択できました。
たとえばlxc.
という指定は、/proc/
や/proc/
は読み込み専用でマウントしました。
1.sys
のみ、mixed
オプションは指定できませんでした。
1.sys
にmixed
というオプションが新設されました。mixed
を指定すると、/sys
以下に読み込み専用でマウントする一方で、/sys/
以下は書き込み可能でマウントします。これによりネットワークインターフェースの設定を変更できます。
sys
でオプションを指定しない場合のデフォルト値は、ro
でしたが、mixed
となります。
sys:mixed
またはsys
sys
を読み込み専用でマウントします。ただし、/sys/
は読み書き可能でマウントします。devices/ virtual/ net/ sys:ro
/sys
を読み込み専用でマウントします。sys:rw
/sys
を読み書き可能でマウントします。
1.lxc.
が、lxc.
の値がcgroup:mixed proc:mixed sys:mixed
と指定されるようになりました。
まとめ
今回はLXC 1.
第29回と今回紹介した機能は、
これらの細かい改良の中には、
LXC 1.