【问题标题】:Docker: is it possible to use overlayed backing filesystem?Docker:是否可以使用覆盖的后备文件系统?
【发布时间】:2016-10-03 21:11:45
【问题描述】:

我想控制 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

我尝试了两个存储驱动程序:overlay2devicemapper(循环)。前者拒绝在overlayfs底层文件系统上工作(文档中也提到它不支持),后者消耗了我所有的内存,然后Docker被操作系统杀死。 Raspberry Pi 和我的 PC 的行为是相同的。

应该工作的唯一存储是 vfs,但据我所读,它的存储效率非常低(没有 Copy-on-Write),所以它对我没有用。

现在我正在尝试使用 aufs 存储驱动程序和 overlayfs 支持文件系统(Docker 文档没有说明它被禁用)。我希望它可以工作,但它有一些缺点:主线 Linux 内核不支持 aufs。

还有其他方法可以在两个文件系统之间切换吗?或者是否可以通过一些完全不同的方式(例如运行内存容器)来保存 SD 卡?

【问题讨论】:

标签: docker raspberry-pi tmpfs


【解决方案1】:

编辑:对不起,这终于不起作用!!!。 Docker 守护程序启动但无法创建容器。这是错误:

Handler for POST /v1.24/containers/create returned error: error creating aufs mount to /var/lib/docker/aufs/mnt c549130a63857658f8675fd84296afae46293a9f7ae54e9ee04e83c231db600f-init: invalid argument

带有overlayfs支持文件系统的aufs存储驱动程序工作。目前看来,这似乎是唯一的选择,但我对解决方案并不满意,因为它对我来说像是一个 hack,而且因为 aufs 不在主线内核中,所以我需要自己编译内核。

这就是我做的(这是一个相当的黑客,请建议我做得更好):

  • 在我的电脑上:

    $ git clone https://github.com/p4l1ly/rpi-kernel
    $ cd rpi-kernel
    $ vagrant up
    

    ...等很久...

    $ vagrant ssh
        $ cp /var/kernel_build/results/kernel-20161003-100112/rpi2_3/kernel7.img /vagrant/
        $ exit
    $ sudo cp kernel7.img /mnt
    
  • 然后在 SD 卡上:

    # 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 aufs
    

【讨论】:

    猜你喜欢
    • 2018-08-04
    • 2016-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-15
    相关资源
    最近更新 更多