前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >虚机即容器 - Project Bonneville详解

虚机即容器 - Project Bonneville详解

作者头像
Henry Zhang
发布2019-04-12 17:19:20
1.6K0
发布2019-04-12 17:19:20
举报
文章被收录于专栏:亨利笔记亨利笔记

以Docker为代表的容器(Container)技术火遍天下,在许多领域得到广泛应用的同时,也引出了对容器技术安全性的担忧。Docker依赖的底层技术之一是Linux的 namespace,目前的6种 namespaces无法彻底把容器中的应用互相隔离开来。容器间的隔离关系有点象下面的电话亭,彼此间仿佛是隔开的,但仔细聆听,又可分辨到隔壁亭子的声音。

既然Linux容器的隔离度不足,是否能在后续的Linux版本中加强呢?由于技术等方面的原因,Linux的namespace种类不可能无限的增多,因此Linux Container的隔离性问题将会是长期困扰其应用场景的重要因素。

为了解决上述隔离性的问题,最近业界兴起了一种“虚机容器”技术。简单讲,就是用轻量级的虚拟机替代Container来运行应用。乍一听,虚拟机是个又笨又重的家伙,怎么能够与快速灵巧的容器相比呢?其实这是个错觉。虚机的“重”主要来自内装的操作系统,现代的操作系统的磁盘空间一般都是GB级别的大小。虚机的“笨”也基本由于操作系统启动太慢,吭嗤半天咖啡凉了才看到登录画面。只要把里面的操作系统瘦身,虚机的创建和启动完全可达到毫秒级。这样,虚拟机就象容器那样轻巧快捷,很适合运行容器化的应用,同时具有良好的隔离性,就象这样:

VMware最近在DockerCon2015上宣布的Project Bonneville就是这样一种“虚机即容器”的解决方案,它在ESX server中增加了直接运行容器化应用的能力。我们一起来看看它的架构:

首先,Bonneville接管了Docker Daemon中容器生命周期管理的功能,把原来在Linux中创建Container的操作转向了ESX Hypervisor。另一方面,它继续支持Docker REST API, Docker client的所有命令都可以正常使用。

当运行Container时,Bonneville首先从Docker Hub下载Docker image。Image以VMDK的格式存放于ESX的datastore里。Bonneville在docker daemon里面提供了自己的graph driver,实现了类似Union FS的功能,Images在ESX中也是按照Layer来组织管理的,用链式克隆(linked clone)实现镜像的叠加。

在容器的镜像准备好之后,最复杂也最有意思的步骤就是启动容器了。Bonneville在ESX上预先创建了一个虚机模板,里面安装了极简版的Photon操作系统(Photon是VMware运行容器应用的Linux Distro),整个虚机镜像只有25MB。这个虚机处于启动后的冻结状态(frozen),就象饺子煮熟后速冻起来那样。当需要运行容器应用的时候,通过ESX的Instant Clone功能,可以瞬间从模板克隆出一个运行态的虚机,“速冻饺子”就这样迅速解冻成刚出锅的“新鲜饺子”了。

Instant Clone (Project Fargo)是ESX 6.0发布的新功能,能够快速克隆运行态的虚拟机,在创建瞬间新旧虚拟机是共享内存和磁盘的,之后采用内存和磁盘的COW(Copy on Write)进行分体操作。Instant Clone最大优点就是虚拟机复制出来时就是可用的状态了,无须再经历操作系统启动的过程,大大节约了时间。上述的虚拟机创建后,再把容器镜像mount到虚拟机里面,容器应用就可以启动运行了。

Bonneville的虚机比Linux Container的内存开销稍微大些,但比起传统的虚机已经大为减少。鉴于虚机容器带来的好处,这样的额外开销是可以接受的。下图是运行Tomcat时内存消耗的比较。

Bonneville用虚拟机装载容器化应用,真正实现了应用的隔离。另一方面,应用的启动速度和Linux Container相差无几,同样地快速灵活。在API方面和Docker完全兼容,大量的Docker工具可以直接使用,如Swarm等。最酷的莫过于可运用Hypervisor各种成熟的技术,来满足容器应用的企业级需求,如HA,SDN, 热迁移等等。在运维管理上,容器和虚拟机可以无差别的统一管理。因为用户大多已经广泛使用虚拟机,统一的管理将给用户带来巨大的便利。下面是vCenter的截图,那个长串字符的虚机就是Container,名称是它的UUID。可以看到,容器和其他虚拟机可以一并管理。

ProjectBonneville在架构上支持包括Linux在内的各种操作系统。在公司内部的Hackerthon中,Bonneville的工程师Ben Corrie还展示了基于Docker的MS-DOS容器(MS-DOS是什么?年轻有为的同学可能真没用过^_^)。目前Bonneville发布的是技术预览版,和其他类似的项目一样,还在不断加强完善的过程中。Bonneville项目是去年WMWorld提出的“VM and container better together”口号的印证。相信“虚机即容器”的方法将会成为企业、公有云等注重安全性的用户优先考虑的方案。

题图照片:温哥华集装箱码头

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 亨利笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档