【问题标题】:Access hosts zfs from docker container从 docker 容器访问主机 zfs
【发布时间】:2017-02-18 17:11:31
【问题描述】:

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

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

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

【问题讨论】:

    标签: docker zfs


    【解决方案1】:

    Znapzend(一个使用 ZFS 快照的备份实用程序)在其 github 页面中对此进行了介绍:https://github.com/oetiker/znapzend#running-in-container。我正在使用它来将 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,因为它会立即退出容器。
    ---剪辑---

    【讨论】:

      【解决方案2】:

      对我来说,它适用于:

      • 特权模式下的 docker 容器
      • zfs 设备映射到容器中(--device /dev/zfs)
      • zfsutils-linux 安装在容器中

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 2020-02-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-08-08
            相关资源
            最近更新 更多