📦
ZFS on linuxでdockerを使う
環境
- ArchLinux
- ZFS root
まえがき
dockerを普通にインストールして、起動すると overlayfs
がエラーを出してデーモンが起動しない。
overlayfs: upper fs does not support RENAME_WHITEOUT.
overlayfs: upper fs missing required features.
修正方法
/etc/docker/daemon.json
に以下を記述する。
/etc/docker/daemon.json
{
"storage-driver": "zfs",
}
これで systemctl restart docker
すれば起動するようになる。
…が。これだけだと、 zfs list
したときに
zroot 271G 179G 32.2G /zroot
zroot/01760219725a63b485556ab9885ee97e1b87827da95d682293371c1f2d179645 501K 179G 74.0M legacy
zroot/037bb15aa1e016188c42f0d6cd9657d56bbb0438369d7b6f285e1441cbe6b0e7 76K 179G 914M legacy
zroot/04462e6d8f2062374364a8716326e01a1c88d5bdc3b7915da73f7a7e82299d67 367M 179G 502M legacy
zroot/187c22b305f7954a9ac62daa046717ba9c6f623debcc5dbbf9315421957f5078 8.58M 179G 923M legacy
zroot/3fe24dc8ad126ac3e27061ff66d57a0c2280c4eebe5d4acd48a884be45994629 43.6M 179G 966M legacy
zroot/47444a9fbb311dd6dffd0354c797ab157d9b22f517fb1f79024f46c38bb261ce 10.3M 179G 83.3M legacy
zroot/4e2c9621b69fdf9ae7af7a49520dfbbcc7e9fcae2fbf2df82c43d33f4e5b87e9 45K 179G 85.7M legacy
zroot/4f4354531f31a28618b2309219e17c21c304bebed17232eb8ccc3989b0281e4d 158M 179G 321M legacy
zroot/50a7b5d1c974be396de8afe91b7d379919229dbd079986ba61aa54be319c6a9f 67K 179G 966M legacy
zroot/5abf3459d5f578114a6eaea508d7d8c56d86edf3d7ca8ce8495d535aad23b7d4 63.5K 179G 137M legacy
zroot/6392643e8c58e4b89ac899ae96bc28dcf817a5e0f54ca478f32bd2f09fab04e8 22.0M 179G 165M legacy
zroot/6cfb82787e34bad9b15b4faa18346065928f6146bdd557d2a336fcf7b62b42d3 52K 179G 502M legacy
このような感じになってしまってイマイチ嬉しくない。これは、/var/lib/docker
を独立したzvolに作成することで少し良くなる。
# rm -rf /var/lib/docker
# mkdir -p /var/lib/docker
# systemctl stop docker
# zfs create -o mountpoint=/var/lib/docker zroot/docker
# systemctl start docker
※ これを実行する前に /var/lib/docker
を空にしておくとゴミが残らなくて良い
実行後
zroot/docker 511M 180G 963K /var/lib/docker
zroot/docker/1e4fb5f1b1b030101aec07118d73d73589e1e2348434a7df28eff3efab3e9963 62.5K 180G 137M legacy
zroot/docker/4bb7f02c4fcb8b2f3c7739147f94f4c6cedc94b45ee61e1a59985cef05647fac 74K 180G 502M legacy
zroot/docker/51c460dd69b9cd9abe17c7179167bb21604e0d69cc7b2bfb10bf5395aeb94680 367M 180G 502M legacy
zroot/docker/612f66a077f07d5e5ded79454deaad77204e390ef923c6ba67ddc26ea80e4c98 4.28M 180G 85.7M legacy
zroot/docker/658be2eba3faec489b7f8f5d6818b17db14c9d13c7b9ee6b06f228c2d8630c6d 240K 180G 502M legacy
zroot/docker/658be2eba3faec489b7f8f5d6818b17db14c9d13c7b9ee6b06f228c2d8630c6d-init 75K 180G 502M legacy
こうしておけば、dockerがどれだけのdisk容量を使っているかもわかりやすくなります。
…ごちゃごちゃ出てきちゃうのは変わらないですが。
Discussion