systemd-nspawn Advent Calendar 2017 9日目の記事です。
systemd-nspawnでは--link-journal=オプションによってjournaldの制御が可能です
これによって、ホスト側からコンテナをジャーナルログを見れたりします。
以下のうちどれかを指定します
- "no" => journalはリンクしない
- "host" => ホスト側にjournalログを置く
- "guest" => ゲスト側にjournalログを置く
- "try-host" => hostと同じだけどログディレクトリ(/var/log/journal)が無くても失敗しない
- "try-guest" => guestと同じだけどログディレクトリ(/var/log/journal)が無くても失敗しない
- "auto" => /var/log/journalの中にコンテナIDに対応するディレクトリがあれば使う
ちょっと分かりにくいかと思いますので以下にまとめました
link-journalの指定 | ログの実体 |
---|---|
no | リンクしない |
host | host側の/var/log/journal/machine-id |
guest | guest側の/var/log/journal/machine-id |
try-host | host側の/var/log/journal/machine-id |
try-guest | guest側の/var/log/journal/machine-id |
auto | 前回と同じ |
"try-host", "try-guest"はhost側に/var/log/journalがなくても下のようなエラーにならずに進めてくれます
Failed to symlink /var/lib/machines/./ubuntu/var/log/journal/e60dfec6da884e6eafc17391c925fb23 to /var/log/journal/e60dfec6da884e6eafc17391c925fb23: No such file or directory
"auto"もその挙動なのですが、前回が"host"ならhost側に置くように、前回が"guest"ならguest側に置くように計らってくれます
またmachine-idに対応するディレクトリが無ければ何もしません
なおどのオプションでもホストからjournalctl -M コンテナ名
とすればコンテナ内部のログは見れます