从docker容器访问主机zfs

从docker容器访问主机zfs,docker,zfs,Docker,Zfs,是否有办法从docker中访问主机zfs快照 我正在尝试使用zfs快照和发送/接收,在基于docker的服务器集群上运行一些自定义备份。为了坚持当前的设置,我希望备份服务也在docker容器中运行。我很难弄清楚是否有办法从docker容器中访问管理级别的hosts文件系统 我基本上需要一种从容器中运行zfs list、zfs snap和zfs send的方法。我的直觉告诉我“不”,但也许有一个聪明的方法,通过一些挂载选项和特权魔法不幸的是,没有办法做到这一点。我们自己也遇到过同样的问题,我们解决

是否有办法从docker中访问主机zfs快照

我正在尝试使用zfs快照和发送/接收,在基于docker的服务器集群上运行一些自定义备份。为了坚持当前的设置,我希望备份服务也在docker容器中运行。我很难弄清楚是否有办法从docker容器中访问管理级别的hosts文件系统


我基本上需要一种从容器中运行
zfs list
zfs snap
zfs send
的方法。我的直觉告诉我“不”,但也许有一个聪明的方法,通过一些挂载选项和特权魔法

不幸的是,没有办法做到这一点。我们自己也遇到过同样的问题,我们解决这个问题的方法是创建一个无容器服务,容器可以向它发出命令,无容器服务可以代表它们发出ZFS命令并返回结果。这不是一个完美的解决方案,但(至少对我们来说)总比没有好。

我使用rancherOS 1.3.0和zfs on/mnt 我从以下内容开始:

    privileged: true
    pid: host
    volumes:
    - /mnt:/mnt:shared
使用此confis,我可以为自己克隆快照

,它与我一起工作:

  • 特权模式下的docker容器
  • 映射到容器中的zfs设备(--device/dev/zfs)
  • 容器中安装了zfsutils linux
Znapzend(使用ZFS快照的备份实用程序)在其github页面中介绍了这一点:。我正在使用它自动将NAS上的备份备份到单独的异地NAS备份

以下是链接中的相关信息:

---剪断--
znapzend也可以作为docker容器映像提供。它需要是特权容器,具体取决于权限

docker run -d --name znapzend --device /dev/zfs --privileged \
    oetiker/znapzend:master
要配置znapzend,请在交互模式下运行:

docker exec -it znapzend /bin/sh
$ znapzendzetup create ...
# After exiting, restart znapzend container or send the HUP signal to
# reload config
默认情况下,容器中的znapzend使用--logto/dev/stdout运行。如果要添加不同的参数,请在命令末尾覆盖它们:

docker run --name znapzend --device /dev/zfs --privileged \
    oetiker/znapzend:master znapzend --logto /dev/stdout --runonce --debug
确保不要在容器中守护znapzend,因为它会立即退出容器。
---剪断---