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またはsyssysを読み込み専用でマウントします。ただし、/sys/は読み書き可能でマウントします。devices/ virtual/ net/ sys:ro/sysを読み込み専用でマウントします。sys:rw/sysを読み書き可能でマウントします。
1.lxc.が、lxc.の値がcgroup:mixed proc:mixed sys:mixedと指定されるようになりました。
まとめ
今回はLXC 1.
第29回と今回紹介した機能は、
これらの細かい改良の中には、
LXC 1.
