Docker开源组件:HyperKit、VPNKit和DataKit介绍

本文讲的是Docker开源组件:HyperKit、VPNKit和DataKit介绍,【编者的话】Anil Madhavapeddy是Docker的技术大拿,也在Cambridge University计算机实验室任教。Anil是Xen Hypervisor最初开发者,现在正在做unikernel方面工作。Anil曾经在NetApp、XenSource、Citrix、Intel和NASA工作过。他是开源OpenBSD操作系统最活跃贡献者。

我们已经在Mac和Windows系统上做了很多内置Docker支持工作,这样让各个操作系统之上的Docker使用习惯可以无缝切换。Mac和Windows上的Docker已经做到可以和Linux Docker容器一样,将存储和网络高效桥接入Docker容器,而不需要任何第三方软件的帮助。

Docker完全基于开源基金会(Solomon Hykes在OSCON 2016做了主题演讲,介绍了Docker与开源之间的发展史),今天,我们将支持Mac和Windows桌面应用的Docker核心技术也贡献给了开源社区。

Mac和Windows版本的Docker技术包括硬件虚拟化,嵌入式操作系统和unikernel技术,用户之前并未有这种体验。我们来仔细研究一下源码是怎么工作的,这样用户可以更好将其用于自己的项目或者贡献自己的代码。

在Mac上运行Docker,会运行一个轻量级hipervisor(独立运行的嵌入式linux实例),其中包含最新稳定版本Docker引擎。跟其他hypervisor不同,因为内置Hypervisor框架(从OSX10.10开始引入),它不需要admin优先权。Docker应用也内置支持Docker VM网络和存储的库,它们在Linux和OSX/Windows之间提供只能交互。

今天,我们很高兴发布这些开源组件,我们将它们应用到Mac和Windows下的Docker,这些新组件包括:

  • HyperKit:OSX上运行的轻量级虚拟化工具包
  • DataKit:现代化分布式组件框架
  • VPNKit:嵌入式虚拟网络库

为了开发Mac和Windows下Docker,每个组件包可以单独使用也可以组合使用。这只是开始:随后我们还会开发其他成熟组件(例如:文件系统框架),其中一些组件包括:HyperKit、DataKit和VPNKit。

HyperKit

HyperKit是一种轻量级虚拟化方法,基于MacOSX10.10之后引入的Hypervisor框架。HyperKit应用可以利用硬件虚拟化运行VMs,但是并不需要特殊权限或者复杂管理工具栈。

HyperKit是基于xHyvevHyve项目,与其他相关功能模块(例如:VPNKit和DataKit)合作使得运行更加有效。由于HyperKit架构与库之上,因此将其和unikernel库连接起来就显得很直接。例如,我们可以通过使用MirageOS QCow库(用OCaml编写),加入持久化块设备支持。

用户可以贡献什么?

有几个重要方面:

  • 支持更多客户机操作系统。Linux是目前唯一支持的操作系统。FreeBSD可以启动,但是需要运行安装器因此不是无缝的。为了启动Windows,OpenBSD 或 NetBSD必须打补丁加入更多BIOS支持,而且需要更细致的测试。
  • 支持更多高级语言绑定。因为HyperKit以库形式表现,可以使用标准外界功能接口跟高级语言整合。
  • Hypervisor功能。某些传统hypervisor功能,例如睡眠、恢复,实时硬件性能计数器重定位并不被支持。为了保证HyperKit轻量级和易于嵌入,这些功能可以以库方式加进来。

我们会确保贡献者被很好组织,他们调教代码会被很好整合到上游项目。 

用户还可以做什么?

需要启动特殊或者短时虚机的应用都可以从HyperKit中获益,例如像Linux的传统操作系统,或者某些unikernel项目。 

DataKit

DataKit是与Git兼容文件系统相协调的工具包。它重用了UNIX管道概念和Plan9 9P协议,同时使用了树结构流数据而不是裸文本。DataKit使得用户通过使用简单脚本与复杂文件系统,可以在松耦合进程之间定义复杂工作流。

DataKit是围绕数据流重建的应用架构,借用Plan9的“everything is a file”概念,在git时代提出了 “everything is a versioned file”的概念。因为在Mac和Windows下的Docker中大量使用DataKit和9P, 我们也开源了go-p9p项目,它是一个现代的,用于Go环境的永久9P库。

用户还可以做什么?

如下是用DataKit创建CI(持续集成)系统的例子,只有50行脚本:github.com/docker/datakit/tree/master/ci

README也介绍了如何将DataKit于Github整合。DataKit可以用于任何需要在数据(版本数据)之间协调的场景。

用户可以贡献什么?

DataKit中对Github PR的支持还很原始,非常需要更多贡献。DataKit可以被用于很多场景,欢迎分享用户自己的项目。

VPNKit

VPNKit是在裸Ethernet网络流量和MacOSX/Windows各自socket之间传输数据的网络库。基于MirageOSTCP/IP unikernel栈,是用OCaml编写的库。 如果需要在user-space内对网路进行粒度控制,VPNKit将会非常有用,另外还可以很方便用高级语言扩展。

用户可以贡献什么?

VPNKit提供了Mac和Windows下Docker容器之间网络交互点,可以用贡献的抓包和监控的方法扩展,将特定包模式通过proxy协议转发到过滤器进行过滤,或者通过HTTP协议可视化用于web应用排错。

用户还可以做什么?

如果VPNKit支持更多端点(endpoint)类型,那么它也可以用于测试网络流量,而不会真正产生或者发送数据造成压力。也可以在应用之间创建轻量级overlay网络。

下一步

VPNKit和DataKit为Mac和Windows下Docker提供了特殊模块,开源他们也许可以带来更多惊喜。这种说法并不是互斥的,我们更希望听到大家自己的项目。在各自项目中,可以记下各自bug。

如果在OSCON,可以在我们的会议上与相关项目维护者见面,可以通过如下链接找到关于Mac和Windows下Docker的演讲报告:slides for the talk I gave yesterday at OSCON

如果不在场,可以注册使用Docker for Mac and Windows beta ,将使用反馈发还给我们。最后,我们队所有在开源此项目中的共享着表示感谢。

原文链接:Improving Docker with Unikernels: Introducing HyperKit, VPNKit and DataKit(翻译:杨峰)

原文发布时间为:2016-05-22

本文作者:hokingyang

本文来自合作伙伴DockerOne,了解相关信息可以关注DockerOne。

原文标题:Docker开源组件:HyperKit、VPNKit和DataKit介绍

时间: 2024-10-27 11:02:10

Docker开源组件:HyperKit、VPNKit和DataKit介绍的相关文章

Android开源组件SlidingMenu侧滑菜单使用介绍_Android

现在很多android应用都有侧滑菜单,效果很不错. GitHub上有SlidingMenu的开源库,使用起来很方便. SlidingMenu GitHub地址:https://github.com/jfeinstein10/SlidingMenu.GitHub上说,Sliding结合ActionBarSherlock使用功能可以更丰富,ActionBarSherlock GitHub地址:https://github.com/JakeWharton/ActionBarSherlock 附csd

Android开源组件SlidingMenu侧滑菜单使用介绍

现在很多android应用都有侧滑菜单,效果很不错. GitHub上有SlidingMenu的开源库,使用起来很方便. SlidingMenu GitHub地址:https://github.com/jfeinstein10/SlidingMenu.GitHub上说,Sliding结合ActionBarSherlock使用功能可以更丰富,ActionBarSherlock GitHub地址:https://github.com/JakeWharton/ActionBarSherlock 附csd

[置顶].NET平台开源项目速览(13)机器学习组件Accord.NET框架功能介绍

    Accord.NET Framework是在AForge.NET项目的基础上封装和进一步开发而来.因为AForge.NET更注重与一些底层和广度,而Accord.NET Framework更注重与机器学习算法以及提供计算机视频.音频.信号处理以及统计应用相关的解决方案.该项目使用C#语言编写,项目主页:http://accord-framework.net/     说明:该文章只是一个基本介绍,主要内容是翻译的官方文档和介绍,部分英文表述个人能力有限,不太熟悉,所以直接照搬原文,有比较

Android自定义控件——开源组件SlidingMenu的项目集成

转载请注明出处:http://blog.csdn.net/allen315410/article/details/39611355        在实际项目开发中,定制一个菜单,能让用户得到更好的用户体验,诚然菜单的样式各种各样,但是有一种菜单--滑动菜单,是被众多应用广泛使用的.关于这种滑动菜单的实现,我在前面的博文中也介绍了如何自定义去实现,请参考Android自定义控件--侧滑菜单,这篇博文描述的是如何从无到有创建一个侧滑菜单的控件,里面的代码不多,但是处理的逻辑和各种效果比较复杂,如果稍

Android 使用ViewPager结合PhotoView开源组件实现网络图片在线浏览功能

  在实际的开发中,我们市场会遇到这样的情况:点击某图片,浏览某列表(某列表详情)中的所有图片数据,当然,这些图片是可以放大和缩小的,比如我们看下百度贴吧的浏览大图的效果:  链接   这种功能,在一些app中是必不可少的!那如何实现呢?接下来,我将介绍通过ViewPager结合PhotoView开源组件,实现这么样的经典效果!   关于ViewPager如何使用,此文不多介绍,网络上太多相关的知识了:而PhotoView,因为它是一个开源的组件,所以如果你不深入研究它的话,只需要掌握它基本的用

深入浅出Docker(三):Docker开源之路

深入浅出Docker(三):Docker开源之路 1. 背景 Docker从一开始的概念阶段就致力于使用开源驱动的方式来发展,它的成功缘于国外成熟的开源文化氛围,以及可借鉴的社区运营经验.通过本文详细的介绍,让大家可以全面了解一个项目亦或者一项技术是如何通过开源的方式发展起来的.为了更准确的描述Docker的社区状况,请先看一份来自Docker官方的数据: 图中数据的看点有: 超过500个代码贡献者.代码的贡献者在社区发展过程中是非常重要的催化剂,它会不断加快产品迭代的速度,让项目更快的交付到最

Linux容器运行时Docker开源

Linux容器运行时Docker开源 发表于2013-03-28 10:22| 次阅读| 来源CSDN| 0 条评论| 作者张红月 开源LinuxDocker 摘要:Docker是一个http://www.aliyun.com/zixun/aggregation/13423.html">云计算平台,它利用Linux的LXC.AUFU.Go语言.cgroup实现了资源的独立,可以很 轻松的实现文件.资源.网络等隔离,其最终的目标是实现类似PaaS平台的应用隔离. Docker是一个功能强大的

Docker开源Moby和LinuxKit

在奥斯汀市举办的DockerCon大会上,Docker宣布了两个重大的开源项目Moby和LinuxKit.从根本上讲,Moby标志着Docker的分裂,这个Docker公司的开源项目已经从GitHub库docker/docker迁移到moby/moby.LinuxKit提供了一套工具,用于构建"只包含运行时平台需要的组件的定制化Linux子系统". 来自Rancher的Darren Shepherd在推特中将Moby的目标归结为: 对Moby感到困惑?简单来说,对于@docker用户而

分享几个.NET WinForm开源组件,纪念逐渐远去的WinForm。。。

前面3个月的时间内,这些.NET开源项目你知道吗?系列文章已经发表了3篇,共计45个平时接触比较少,曾经默默无闻的.NET开源项目,展示给大家,当然不是每个人都能用得上,但也的确是有些人用了,反响还不错,所以非常感谢大家的支持.由于收藏夹的项目越来越少,越整理到最后,越发现一些问题,所以就按专题来分开.今天分享给大家的是关于WinForm开发相关的小巧灵活的开源项目.虽然现在WinForm开发可能不常见了,都转向B/S了,但偶尔还是有用到的地方的,特别是学校,以及一些研究演示之类的.所以这篇文章