systemd.nspawn

 仮想環境にsystemd-nspawnを使うにあたって、systemd-nspawan@machineを編集していたのだが、nspawnファイルを使うほうが良いらしい。

/etc/systemd/nspawn/machine.nspawnを作ればそれを読み取ってくれるらしい。読み取らせるオプションがsystemd-nspawnの–settings=override だった。

 プロセスを見ると–network-veth とか -U とかついているんだけどoverrideでちゃんとnspawnファイルを読み込んでいるらしくそちらが有効になっているようだ。

 一番怖かったのは-Uで、やけに起動に時間がかかるな、と思ったら全部のUIDをprivate用に変更してくれやがって修正が大変でした。
これを外す方法がわからなかったのでsystemctl edit したと言っても過言ではない。
PrivateUsers=0 がその設定。

/etc/systemd/machine.nspwan

[Exec]
Boot=true
Hostname=machine
LinkJournal=try-guest
PrivateUsers=0

[Network]
Bridge=bridge0

[Files]
Bind=/home

systemctl edit systemd-nspawn@machine.service
するのとどっちがいいかというと、一応用意されている.nspawnファイルの方が良いのかなーということで全部.nspawnに置き換えた。
とりあえず問題は出ていない。

 あと、mount -o bind で共有するより、Bindで指定するほうが、host0で余計なマウントが出てこない(cgroupでnamespaceが分けられている?)ので良さそうだ。まあhomeぐらいしかないんだけど。
/var/cache/apt/archivesとか共有してもいいかもしんない。

 ちなみにネットワークを分けずにhost0のネットワークそのまま使う場合には、[Network]にPrivate=false でOK。


Posted

in

,

by

Tags:

Comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です