我想控制 docker 是在持久存储上运行还是在覆盖有易失性存储的持久存储上运行。
这是因为我在 SD 卡(Raspberry Pi)上有文件系统,它需要持续很长时间。我主要想在覆盖有 tmpfs(在其上运行容器)的只读文件系统(ext4)上进行操作,但是当我检测到更新可用时,我想卸载 overlayfs,将文件系统切换为读写,更新图像,然后将所有内容切换回 tmpfs 覆盖的只读文件系统。
# mv /var/lib/docker /var/lib/docker~
# mkdir -p /var/lib/docker /tmp/docker /tmp/work
# mount -t overlay -o lowerdir=/var/lib/docker~,upperdir=/tmp/docker,workdir=/tmp/work overlay /var/lib/docker
# docker daemon --storage-driver devicemapper
我尝试了两个存储驱动程序:overlay2和devicemapper(循环)。前者拒绝在overlayfs底层文件系统上工作(文档中也提到它不支持),后者消耗了我所有的内存,然后Docker被操作系统杀死。Raspberry Pi 和我的 PC 的行为是相同的。
唯一应该工作的存储是vfs,但根据我的阅读,它的存储效率非常低(没有写时复制),所以它对我没有用。
现在我正在尝试使用 aufs 存储驱动程序和 overlayfs 支持文件系统(Docker 文档没有说明它被禁用)。我希望它能工作,但它有一些缺点:主线 Linux 内核不支持 aufs。
还有其他方法可以在两个文件系统之间切换吗?还是可以通过一些完全不同的方式(例如运行内存容器)来保存 SD 卡?