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介绍
目录
相关文章
|
关系型数据库 MySQL 数据库
如何使用Docker部署开源CMF Drupal并结合cpolar内网穿透远程访问
如何使用Docker部署开源CMF Drupal并结合cpolar内网穿透远程访问
258 0
|
7月前
|
Linux iOS开发 Docker
MyEMS开源系统安装之Linux/macOS上的DOcker
本指南详细介绍了如何在Linux/macOS上使用Docker部署MyEMS系统。主要内容包括:前置条件(如安装Docker、npm和MySQL),以及分步骤部署各个组件(如myems-api、myems-admin、myems-modbus-tcp等)。每个步骤涵盖源代码复制、环境配置、镜像构建、容器运行及日志管理等操作,并提供了多平台构建的支持。最后,指南还说明了默认端口和登录凭据,帮助用户快速启动并访问MyEMS的管理界面和Web界面。
232 1
|
10月前
|
运维 网络安全 文件存储
找不到类似 Docker Desktop 的 Web 管理界面?试试这些开源方案
Docker Desktop 是本地容器化开发的利器,但存在无法通过 Web 远程管理、跨平台体验不一致等问题。为此,推荐几款轻量级、可 Web 化管理的 Docker 工具:Portainer 功能全面,适合企业级运维;CasaOS 集成应用商店和 NAS 功能,适合家庭/个人开发环境;Websoft9 提供预集成环境,新手友好。这些工具能有效提升容器管理效率,满足不同场景需求。
690 3
|
11月前
|
运维 数据可视化 开发者
Dpanel:Star2k,短短时间就被大家称为GitHub开源神器!轻量化Docker面板,还在等什么
如今的软件开发和运维领域,Docker容器技术已经成为一种主流的解决方案,它允许开发者和系统管理员以更高效、更灵活的方式部署和管理应用程序。然而,Docker的命令行界面虽然强大,但对于某些用户来说可能不够直观。今天,我们要介绍的开源项目——dpanel,就是一个轻量化的Docker可视化管理面板,它以其简洁、高效的特点,为用户提供了一个易于操作的界面来管理Docker容器和镜像。
1045 0
|
存储 缓存 运维
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像
Docker镜像采用分层存储,每层代表镜像的一部分,如基础组件或应用依赖,多层叠加构成完整镜像。此机制减少存储占用,提高构建和传输效率。Docker还通过缓存机制提升构建和运行效率,减少重复工作。文章深入解析了Docker镜像分层存储与缓存机制,包括具体实现、管理优化及实际应用案例,帮助读者全面理解其优势与挑战。
501 4
|
关系型数据库 MySQL Linux
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
基于阿里云服务器Linux系统安装Docker完整图文教程(附部署开源项目)
2703 3
|
存储 安全 虚拟化
深入解析:Docker的架构与组件
【8月更文挑战第27天】
639 5
|
缓存 开发者 Docker
Dockerfile是Docker容器化过程中的核心组件,它允许开发者以一种可重复、可移植的方式自动化地构建Docker镜像
【8月更文挑战第19天】Dockerfile是构建Docker镜像的脚本文件,含一系列指令定义镜像构建步骤。每条大写指令后跟至少一个参数,按序执行,每执行一条指令即生成新的镜像层。常用指令包括:FROM指定基础镜像;RUN执行构建命令;EXPOSE开放端口;CMD指定容器启动行为等。优化策略涉及减少镜像层数、选择轻量基础镜像、利用缓存及清理冗余文件。示例:基于Python应用的Dockerfile包括设置工作目录、复制文件、安装依赖等步骤。掌握Dockerfile有助于高效自动化构建镜像,加速应用部署。
212 1
|
存储 Linux 网络安全
Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别
Centos安装Docker的详细安装步骤,Docker相关组件:docker-ce-cli、docker-ce和containerd.io的区别;CentOS7安装DockerCompose;Docker镜像仓库
2088 11
|
测试技术 数据安全/隐私保护 Docker
Docker部署开源项目Django-CMS企业内容管理系统
【5月更文挑战第20天】Docker部署开源项目Django-CMS企业内容管理系统
760 1