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

简介: 本文讲的是Docker开源组件:HyperKit、VPNKit和DataKit介绍,【编者的话】Anil Madhavapeddy是Docker的技术大拿,也在Cambridge University计算机实验室任教。
本文讲的是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之间提供只能交互。
1.png

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

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

HyperKit

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

HyperKit是基于 xHyve vHyve 项目,与其他相关功能模块(例如: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之间传输数据的网络库。基于 MirageOS TCP/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介绍
目录
相关文章
|
1月前
|
关系型数据库 MySQL 数据库
如何使用Docker部署开源CMF Drupal并结合cpolar内网穿透远程访问
如何使用Docker部署开源CMF Drupal并结合cpolar内网穿透远程访问
|
3月前
|
Web App开发 Linux 数据安全/隐私保护
Docker本地部署开源浏览器Firefox并远程访问进行测试
Docker本地部署开源浏览器Firefox并远程访问进行测试
141 1
|
4月前
|
Ubuntu 调度 数据安全/隐私保护
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
Docker部署开源分布式任务调度平台DolphinScheduler并实现远程访问办公
|
4月前
|
Ubuntu 调度 数据安全/隐私保护
使用Docker部署开源分布式任务调度系统DolphinScheduler
使用Docker部署开源分布式任务调度系统DolphinScheduler
使用Docker部署开源分布式任务调度系统DolphinScheduler
|
8月前
|
弹性计算 Linux 应用服务中间件
【ECS生长万物之开源】部署并使用Docker
Docker是一款开源的应用容器引擎,具有可移植性、可扩展性、高安全性和可管理性等优势。开发者可将应用程序和依赖项打包到一个可移植的容器中,快速发布到Linux机器上并实现虚拟化,实现更高效地构建、部署和管理应用程序。本文介绍如何在云服务ECS实例上,部署并使用Docker。
|
8月前
|
运维 关系型数据库 MySQL
使用docker快速部署ferry开源工单系统
简单好用的工单系统,你不来看看吗?
625 0
|
9月前
|
Kubernetes 负载均衡 并行计算
基于Truss+Docker+Kubernetes把开源模型Falcon-7B送上云端(译)(下)
基于Truss+Docker+Kubernetes把开源模型Falcon-7B送上云端(译)(下)
126 0
|
9月前
|
并行计算 Kubernetes 安全
基于Truss+Docker+Kubernetes把开源模型Falcon-7B送上云端(译)(上)
基于Truss+Docker+Kubernetes把开源模型Falcon-7B送上云端(译)(上)
150 0
基于Truss+Docker+Kubernetes把开源模型Falcon-7B送上云端(译)(上)
|
9月前
|
安全 网络协议 Java
IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈有来商城线上部署方式
IDEA 集成 Docker 插件实现一键远程部署 SpringBoot 应用,无需三方依赖,开源微服务全栈有来商城线上部署方式
|
11月前
|
Kubernetes 监控 安全
「容器安全」10多个用于Docker安全性的顶级开源工具
「容器安全」10多个用于Docker安全性的顶级开源工具