您可以捐助,支持我们的公益事业。

1元 10元 50元





认证码:  验证码,看不清楚?请点击刷新验证码 必填



  求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
   
 
 
     
   
 订阅
  捐助
Docker开源组件:HyperKit、VPNKit和DataKit介绍
 
作者:hokingyang   来源:dockone  发布于 2016-6-14
  4423  次浏览      13
 

我们已经在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之间提供只能交互。

1.png


今天,我们很高兴发布这些开源组件,我们将它们应用到Mac和Windows下的Docker,这些新组件包括:
  • 1.HyperKit:OSX上运行的轻量级虚拟化工具包
  • 2.DataKit:现代化分布式组件框架
  • 3.VPNKit:嵌入式虚拟网络库

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

HyperKit

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

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

用户可以贡献什么?

有几个重要方面:
  • 1.支持更多客户机操作系统。Linux是目前唯一支持的操作系统。FreeBSD可以启动,但是需要运行安装器因此不是无缝的。为了启动Windows,OpenBSD 或 NetBSD必须打补丁加入更多BIOS支持,而且需要更细致的测试。
  • 2.支持更多高级语言绑定。因为HyperKit以库形式表现,可以使用标准外界功能接口跟高级语言整合。
  • 3.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。

 

   
4423 次浏览       13
 
相关文章

云计算的架构
对云计算服务模型
云计算核心技术剖析
了解云计算的漏洞
 
相关文档

云计算简介
云计算简介与云安全
下一代网络计算--云计算
软浅析云计算
 
相关课程

云计算原理与应用
云计算应用与开发
CMMI体系与实践
基于CMMI标准的软件质量保证
最新课程计划
信息架构建模(基于UML+EA)3-21[北京]
软件架构设计师 3-21[北京]
图数据库与知识图谱 3-25[北京]
业务架构设计 4-11[北京]
SysML和EA系统设计与建模 4-22[北京]
DoDAF规范、模型与实例 5-23[北京]

专家视角看IT与架构
软件架构设计
面向服务体系架构和业务组件的思考
人人网移动开发架构
架构腐化之谜
谈平台即服务PaaS
更多...   
相关培训课程

云计算原理与应用
Windows Azure 云计算应用

摩托罗拉 云平台的构建与应用
通用公司GE Docker原理与实践
某研发中心 Openstack实践
知名电子公司 云平台架构与应用
某电力行业 基于云平台构建云服务
云计算与Windows Azure培训
北京 云计算原理与应用