打包 Docker 与数据,Flocker 实现整体轻松迁移

  • 张天雷

2015 年 7 月 7 日

话题:语言 & 开发架构

随着Docker容器的流行,使用 Docker 的用户和案例也越来越多。在享受 Docker 便捷性的同时,相关人员发现 Docker 也存在一些缺点。最典型的就是,传统 Docker 使用数据时都是以数据卷的方式进行的。但是,Docker 并不支持运行时携带相关数据直接迁移,也不支持非运行时把数据保存在 Docker 里进行迁移。这就直接导致容器之间的数据迁移耗费资源,而且共享数据难以管理。针对该问题,大数据公司ClusterHQ提供了一个解决方案。该方案利用公司的核心技术——开源数据卷管理器Flocker,实现了 Docker 容器和数据的打包整体迁移。接下来,本文就对 Flocker 进行简要介绍。

作为 ClusterHQ 公司 2014 年推出的产品,Flocker 主要负责 Docker 容器及其数据的管理。从功能方面而言,Flocker 是一个数据卷管理器和多主机的 Docker 集群管理工具。用户可以通过它来控制数据,实现在 Docker 中运行数据库、队列和键值(Key/Value)存储等服务,并在应用程序中轻松使用这些服务。Flocker 的一大特性就是,把数据卷与 Docker 容器关联在了一起,使得容器可以携带数据在一个集群内的不同主机间进行迁移。但是,该方法之前存在一定的局限性。容器内的数据需要由共享的后端存储来提供,而且后端存储要能够被集群内的所有节点访问。只有亚马逊 EBS、Rackspace 的 Cloud Block Storage、EMC 的 ScaleIO 以及单后端情况下的基于 ZFS 的存储等少数存储后端能够适用于该场景。

近日,Flocker 1.0 版本正式发布。该版本允许第三方编写 Flocker 存储驱动来支持自己的存储系统,解决了之前后端存储的局限性,使得数据迁移变得更加便捷。ClusterHQ 的首席执行官 Mark Davis 表示,任何需要用到 VMware vMotion 的地方就会涉及到容器的迁移问题。如果容器中包含数据,用户就需要用到类似 Flocker 这样的工具。虽然 Flocker 目前还不能做到像 vMotion 一样进行应用程序的运行时迁移,但它的迁移过程也仅需要一小段的关闭时间。ClusterHQ 的技术总监兼联合创始人 Luke Marsden 表示,关闭时间的长短取决于后端把一个卷从一个虚拟机连接到另一个虚拟机的速度。ClusterHQ 已经在努力通过卷快照等加速重新连接的过程,缩短这个时间。


感谢郭蕾对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

语言 & 开发架构