尝试Docker + LXC + ZFS + Proxmox

起因仅仅是因为想要Host新的服务,就是前文提到的 Immich,然后对现在的 Docker + VM + ZFS + Proxmox的方案有点点不满意,觉得每次折腾一个服务的时候,还是很容易把其他的服务一并搞挂了,尤其是Docker的Network有个有点蛋疼的问题,所以想着干脆一不做二不休,把每个服务都单独拿出来,装在一个LXC里面。而Docker其实仅仅是因为觉得Deploy起来方便,再加上Portainer CE版本管理起来,有个UI也确实顺手一些。于是就开启了这次的折腾之旅。

先说结论

不推荐这样做。

最主要的原因:Docker的storage driver在基于ZFS的LXC上面,基本上只能用VFS。这个driver速度慢,空间占用高,对家用SSD对ZFS尤其不友好。Immich的Stack一度因为磁盘速度太慢,根本启动不起来。后来还是在LXC的subvol上面关了zfs的sync(i.e standard -> disable)才能跑起来。而一个Nginx Proxy Manager,跑起来需要大概20GB的空间。如此巨大的空间消耗,和如此慢的磁盘性能,居高不下的IO Delay,已经宣判了在ZFS系统上面跑LXC,再跑Docker,基本上就是不合理的了。

而且原本采用LXC应该也有一部分原因是为了更好的性能,可是如此糟糕的磁盘表现,基本上就否定了这个方案。而且VFS实际上也是宣称只应该用在Test的情况下,生产环境应该是避免的。

简单来说,要Docker,就用VM。用LXC,就别用Docker。(最好也别用NFS,CIFS,FUSE之类的,而且最好不要privileged。这说实话我就觉得LXC不会太好用了...)。

LXC上面遇到的其他问题