gpt4 book ai didi

docker - Docker:是否可以使用覆盖后备文件系统?

转载 作者:行者123 更新时间:2023-12-02 18:41:14 27 4
gpt4 key购买 nike

我想控制docker是在永久存储还是在 Volatile 覆盖的永久存储上运行。

这是因为我的文件系统位于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文档未声明已禁用)。我希望它可以工作,但是它有一些缺点:Mainline Linux内核不支持aufs。

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

最佳答案

编辑:抱歉,最后不起作用! 。 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存储驱动程序可以工作。到目前为止,这似乎是唯一的选择,但是我对解决方案不满意,因为它对我来说似乎是一种黑客,并且因为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
  • 关于docker - Docker:是否可以使用覆盖后备文件系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39775547/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com