3

有没有办法从 docker 中访问主机 zfs 快照?

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

我基本上需要一种在容器内运行zfs list的方法。我的直觉告诉我“不”,但也许有一些安装选项和特权魔法的聪明方法zfs snapzfs send

4

4 回答 4

1

我在 /mnt 上使用带有 zfs 的 rancherOS 1.3.0 我启动容器:

    privileged: true
    pid: host
    volumes:
    - /mnt:/mnt:shared

有了这个confis,我可以克隆快照

于 2018-04-11T08:37:31.240 回答
1

对我来说,它适用于:

  • 特权模式下的 docker 容器
  • zfs 设备映射到容器中(--device /dev/zfs)
  • zfsutils-linux 安装在容器中
于 2020-12-30T21:26:13.223 回答
0

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

于 2017-04-18T05:26:50.933 回答
0

Znapzend(使用 ZFS 快照的备份实用程序)在其 github 页面中对此进行了介绍:https ://github.com/oetiker/znapzend#running-in-container 。我正在使用它来将我的 NAS 上的备份自动备份到单独的异地备份 NAS。

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

---SNIP---
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,因为它会立即退出容器。
---剪辑---

于 2021-04-01T16:00:09.320 回答