2
2

More than 5 years have passed since last update.

systemd-nspawnとbtrfsとの連携

Last updated at Posted at 2017-12-07

systemd-nspawn Advent Calendar 2017 3日目の記事です。

systemd-nspawnはデフォルトでbtrfsと連携するようになっています。
btrfsと連携することでより便利になります

準備

apt install btrfs-progs
mkfs.btrfs /dev/vda
echo '/dev/vda       /var/lib/machines  btrfs   defaults          0       0' >> /etc/fstab
mount /var/lib/machines

こうなればOKです

df -hT /var/lib/machines
ファイルシス   タイプ サイズ  使用  残り 使用% マウント位置
/dev/vda       btrfs     20G   17M   18G    1% /var/lib/machines

使ってみる

適当にコンテナをインポートしてみます

docker export $(docker create fedora:27 echo ok) > /tmp/fedora27.tar
machinectl import-tar /tmp/fedora27.tar

ちなみにmachinectlコマンドを使わない場合は自分でsubvolumeを作ればOKです

cd /var/lib/machines/
btrfs subvolume create ubuntu
debootstrap --arch amd64 xenial ./ubuntu/ http://archive.ubuntu.com/ubuntu

するとこんな感じにbtrfsのsubvolumeが出来ているのがわかります。
(1コンテナ1サブボリュームになります)

btrfs subvolume list -p /var/lib/machines
ID 259 gen 62 parent 5 top level 5 path fedora27
cd /var/lib/machines
# 複製も一瞬ですし
machinectl clone fedora27 fedora28
# --ephemeralオプションを付けるとコンテナ終了時に自動的に破棄されるコンテナが作れる
systemd-nspawn -D fedora27/ --ephemeral
# fedora27をテンプレートとし新たなhogeコンテナを作る(コンテナが終了しても消えない)
systemd-nspawn --template=fedora27 -D hoge

--ephemeralオプションはDockerのイメージと動いてるコンテナを明確に分けるDockerみたいな使い方する人には良いかもしれません
この辺のオプションはbtrfsの機能で実現していて、単純コピーではないので高速ですし、Disk容量も節約できます。
便利ですね

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2