🐳
ZFSを有効化したLinuxでdockerデーモンを起動するとzpool/ROOT 下に作られてしまうのを防ぐ
ZFSを有効化したLinuxで、dockerデーモンを起動すると、自動でZFSを使って起動するようになる。しかし、レイヤー1つずつにfilesystemとして登録され、しかも zpool/ROOT/var/lib/xxx に作られてしまい、zpool/ROOT でスナップショットをとると、dockerの各レイヤーにまでスナップショットが取られてしまい、辛い感じになる。
これを回避するには、zpool/ROOT とは異なる zpool/DOCKER を作成し、それを使ってdockerデーモンが動くようにすれば良い。
以下のコマンドで、filesystemを作る。
sudo zfs create zpool/DOCKER
そして、dockerデーモンの設定を /etc/docker/daemon.json に置く。
{
"storage-driver": "zfs",
"storage-opts": ["zfs.fsname=zpool/DOCKER"]
}
dockerデーモンを再起動する。この時、既存のdockerディレクトリを消去しておく。
sudo systemctl stop docker
sudo rm -rf /var/lib/docker
sudo systemctl start docker
試しにimageをpullしてみると、zpool/DOCKERに増えていることが確認できる。
docker pull debian
sudo zfs list
NAME USED AVAIL REFER MOUNTPOINT
zpool 97.5G 817G 96K /
zpool/DOCKER 91.8M 817G 96K /DOCKER
zpool/DOCKER/ea9d345a8ab2cc40480ab9120607a8c831a45845b284daf0e59f9315767628de 91.7M 817G 91.7M legacy
zpool/ROOT 25.9G 817G 96K none
Discussion