systemd-nspawn Advent Calendar 2017 4日目の記事です。
.nspawnファイルとはコンテナ個別の設定を行うために設置するファイルです
以下の場所に設置できます
- /etc/systemd/nspawn/machine.nspawn
- /run/systemd/nspawn/machine.nspawn
- /var/lib/machines/machine.nspawn
これは順に検索され、見つかった時点で検索を終了します。
例えば、/var/lib/machines/ubuntu にコンテナがあり、/etc/systemd/nspawn/ubuntu.nspawnと/run/systemd/nspawn/ubuntu.nspawnにファイルを置いた場合は最初のファイルに書いた設定しか有効になりません。
また、コマンド引数の方が優先されるため、例えばnspawnファイルに
[Exec]
Boot=0
と書いたとしても、-bオプションを付けて起動すれば/sbin/initから起動します。
もう一点注意点として、/var/lib/machines/machine.nspawn に置いたnspawnファイルはホスト側に影響するようなオプション
TemporaryFileSystem=, Bind=, BindReadOnly=, Capability= 等は使うことができません。
そのようなオプションを使う場合は/etc/systemd/nspawn/machine.nspawnか/run/systemd/nspawn/machine.nspawnに置いてください。
設定サンプル
[Exec]
# /sbin/initから起動させる
Boot=1
[Files]
# hostの/mntとコンテナの/var/tmpをつなげる
Bind=/mnt:/var/tmp
[Network]
# br0インターフェイスにブリッジする
Bridge=br0
その他詳しいことはman systemd.nspawnを参照ください