前回まででLXCに付属しているコマンドの説明が済みましたので,
LXCの設定は2つに分かれます。システムの設定とコンテナの設定です。
- システムの設定
- LXCがシステム全体で共通して使用する値を設定します。コンテナの保存場所やストレージバックエンドの設定などです。
- コンテナの設定
- 各コンテナの動作を決定する設定です。コンテナごとに設定ファイルが存在します。
Ubuntuにおけるシステム設定が書かれたファイルや,
設定ファイルの書式
LXCの設定ファイルの書式はシンプルです。
- 設定は
『設定項目名 = 設定値』 という形式で1行につき1つ設定します ("="の前後のスペースはなくても構いません) - 行頭が "#" で始まる場合,
その行はコメントとなります - 各設定項目名の頭には "lxc." が付きます
以下のように設定行の途中で "#" を記載してコメントは書けません。
# この行はコメントです
lxc.arch = x86_64 # このようなコメントは許されません
設定項目の頭に必ず "lxc." と付けなければいけないのは少し冗長に思えますね。
システムの設定
システムの設定で設定できる項目は前回紹介したlxc-config
コマンドで一覧できます。
# lxc-config -l lxc.default_config lxc.lxcpath lxc.bdev.lvm.vg lxc.bdev.lvm.thin_pool lxc.bdev.zfs.root
このコマンドで設定可能な項目が一覧できるはずなのですが,
- lxc.
cgroup. use - lxc.
cgroup. pattern
現時点のlxc-config
コマンドにはなぜかその設定を確認する実装がされていません
- ※1)
- 筆者がパッチを送付していますので今後表示できるようになるかも知れません。
- 2015年7月15日補足)
その後パッチがマージされましたのでバージョン1. 1では lxc.
とcgroup. use lxc.
の値が表示できるようになりました。cgroup. pattern
lxc. default_ config
lxc.
で指定したファイルの内容は,lxc-create
コマンドを使ってコンテナを作成した場合に,
Ubuntuの場合,lxc.
の値は/etc/
に設定されており,
# lxc-config lxc.default_config /etc/lxc/default.conf # cat /etc/lxc/default.conf lxc.network.type = veth lxc.network.link = lxcbr0 lxc.network.flags = up lxc.network.hwaddr = 00:16:3e:xx:xx:xx
この設定がlxc-create
で作成したコンテナにコピーされている様子は第8回のlxc-create
を使ったコンテナの作成を説明したところで紹介しました。
ネットワークの設定以外にも作成するコンテナに自動で設定したい項目がある場合はlxc.
で指定されているファイルに記載すると良いでしょう。
lxc. path
lxc.
は第8回で紹介した通り
デフォルト値はコンパイル時に指定した値になります。このパスを変更したい場合は指定すると良いでしょう。
Ubuntu の場合,/var/
となっています。
lxc. cgroup. use
LXCで使用するcgroupのサブシステムを指定します。執筆時点の1.
たとえば以下のように指定すると,
lxc.cgroup.use = cpu,cpuset,memory
lxc. cgroup. pattern
コンテナを起動する際にcgroupfsに作成するLXCコンテナ用のグループのパターンを指定します。
デフォルトではこの値はlxc/%n
となっています。%n
はコンテナ名に置き換わります。
このデフォルトの設定で,/sys/
にマウントされているときにct01
というコンテナを起動すると/sys/
にct01
用のグループを作成します。
lxc.cgroup.pattern = hoge/%n
と設定すると,ct01
用のグループは/sys/
に作成されます。
システム設定のうちlxc.
で始まる設定はストレージバックエンドの設定です。これらの設定については,
システム設定の詳細についてはman lxc.
でご覧になれます。
コンテナの設定
システムの設定は,
それに対してコンテナの設定は本格的にコンテナを運用する場合には変更する場合も多いでしょう。こちらは設定項目もかなりの数にのぼります。
コンテナの設定についてはman lxc.
で詳細を調べられます。
lxc-create
でコンテナを作成した際に自動的に作られる設定ファイルやLXCが標準で準備する設定ファイルにある項目から順に見ていきましょう。
設定ファイルのinclude ~lxc. include
lxc.
は文字通り他に準備した設定ファイルをincludeする設定です。LXCは共通で使用する推奨の設定があらかじめ準備されており,lxc-create
ではそれをincludeする設定が作成されます。
Ubuntuコンテナを作成した場合は以下のような設定がなされ,
lxc.include = /usr/share/lxc/config/ubuntu.common.conf
コンテナのアーキテクチャの設定 ~lxc. arch
lxc.
でコンテナのアーキテクチャを設定します。x86_i686
などと設定します。
コンテナのルートファイルシステム ~lxc. rootfs
コンテナイメージが保存されているルートファイルシステムを指定します。
ストレージバックエンドがディレクトリであるとき,
lxc.rootfs = /var/lib/lxc/ct01/rootfs
コンテナのホスト名 ~lxc. utsname
lxc.
でコンテナのホスト名を指定します。コンテナ起動時に新しいUTS名前空間が作成され指定したホスト名が設定されます。