虚拟化 VS 容器化 哪家强?

标签: 虚拟化 vs 容器 | 发表时间:2015-04-23 09:41 | 作者:
出处:http://www.iteye.com
【编者的话】以 Docker 为代表的容器技术一度被认为是虚拟化技术的替代品,然而这两种技术之间并不是不可调和的。作者分别列举了容器技术以及虚拟化技术的优缺点,并提出将两者结合取长补短的解决方案。

容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境。为了能达到这种效果,容器技术使用了一系列的系统级别的机制诸如利用Linux namespaces来进行空间隔离,通过文件系统的挂载点来决定容器可以访问哪些文件,通过cgroups来确定每个容器可以利用多少资源。此外容器之间共享同一个系统内核,这样当同一个库被多个容器使用时,内存的使用效率会得到提升。

对于系统虚拟化技术来说,虚拟层为用户提供了一个完整的虚拟机:包括内核在内的一个完整的系统镜像。CPU虚拟化技术可以为每个用户提供一个独享且和其他用户隔离的系统环境,虚拟层可以为每个用户分配虚拟化后的CPU、内存和IO设备资源。
哪家强?

通常来说,这取决于你的需求。如果你只是希望将应用运行的实例进行隔离,那么对于管理应用运行环境、启动应用实例以及控制资源开销方面容器将是一个极为高效的工具。像Docker这一类的容器,其设计原则就是为了解决这种应用环境的修改以及应用部署的问题,并且这十分符合DevOps理念(你可能希望知道更多关于DevOps理念的内容)。

如果你从服务器虚拟化的角度来寻找最好的环境隔离方案,那么系统级的虚拟化是更好的方案:和容器相比,邻居租户(Noisy neighbours )对系统的影响在虚拟化的方案下将不是一个问题。尽管现在很多容器都在专注于提高其隔离能力,但是虚拟机的隔离还是要优于容器。从物理服务器过渡到虚拟服务器是一个很自然的过程,并且现在针对虚拟服务器的管理的生态系统也很完善。

在z系统中,Linux具有很好的伸缩性(运行容器),但是z是一个极度高效虚拟化(运行虚拟服务器)的平台,它继承了整个系统架构。尽管没有精确的测量,将虚拟化和容器技术相结合,在z系统中会比其他平台要容易。

还有第三条路:两者兼而有之。

有多种方式可以将系统虚拟化及容器技术相结合:

1.一个容器中运行一个虚拟机



Docker在部署容器方面十分灵活。其中一个选择(execution driver)是利用KVM镜像。这样就可以在最好的隔离性情况下发挥DevOps所擅长的使用Docker各种方式。但是这也付出了需要在启动容器时启动整个操作系统实例的代价。这也就意味着较长的启动时间以及低效的内存使用,只能通过内核共享内存(KSM)来提升内存利用率。这种方法效果和效率都不理想,但是这是一个好的开始。

2.一个虚拟机中运行一个容器



与之相反的,你一可以在虚拟机中启动一个容器。这里的虚拟机并不是由Docker控制,而是通过现有的虚拟化管理设施来控制。一旦系统实例启动,就可以通过Docker来运行容器而武器其他特殊的设置。同时,由于不同容器运行在不同的虚拟机上,容器之间也能有很好的隔离。而内存的使用率需要通过虚拟层的内存共享来提升。

2b.一个虚拟机中运行多个容器



对于多租户的情况,可以用另一种形式在虚拟机中运行Docker。这种情况下,我们假设在不同租户的容器之间需要强隔离,而对于同一用户的不同容器,简单的Linux容器隔离已经足够。这样我们就可以在减少虚拟机个数的情况下保证租户之间的隔离,同时可以利用Docker带来的各种便利。

总结来说:需要根据实际需求进行选择。

原文链接: Virtualization vs. Containerization?

感谢 mengyidan1988 投递这篇资讯

资讯来源: http://dockerone.com/

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [虚拟化 vs 容器] 推荐:

虚拟化 VS 容器化 哪家强?

- - ITeye资讯频道
【编者的话】以 Docker 为代表的容器技术一度被认为是虚拟化技术的替代品,然而这两种技术之间并不是不可调和的. 作者分别列举了容器技术以及虚拟化技术的优缺点,并提出将两者结合取长补短的解决方案. 容器为应用程序提供了隔离的运行空间:每个容器内都包含一个独享的完整用户环境空间,并且一个容器内的变动不会影响其他容器的运行环境.

虚拟化技术对比:Xen vs KVM

- - 操作系统 - ITeye博客
对服务器的虚拟化不知道使用哪个,可以参考这篇文章,包括世纪互联也是用的xen进行虚拟化. OpenStack与KVM相互辉映. OpenStack几乎支持所有的虚拟化管理程序,不论是开源的(Xen与KVM)还是厂商的(Hyper-V与VMware). 但在以前,OpenStack是基于KVM开发的,KVM常常成为默认的虚拟机管理程序.

GIF vs APNG vs WebP

- - JayXon
GIF 是一个非常古老的格式,1987 年诞生,最后一个版本是 1989 年. (这就是为什么 GIF 文件头的 magic number 是 GIF89a). APNG 相对新一些,是 Mozilla 在 2004 年推出的,十几年的科技进步是不容小觑的,所以 APNG相对于 GIF 的优势十分明显,后面会分析.

转 redis vs memcached

- - 数据库 - ITeye博客
传统MySQL+ Memcached架构遇到的问题.   实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:.   1.MySQL需要不断进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间.

NOSQL数据库大比拼:Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase

- - 博客园_Ruby's Louvre
话说,尽管 SQL 数据库一直是我们IT行业中最有用的工具,然而,它们这样在行业中超过15年以上的“转正”终于就要寿终正寝了. 现在,虽然关系型数据库仍然无所不在,但它越来越不能满足我们的需要了. 但是,各种 "NoSQL" 数据库之间的差异比当年众多关系型数据库之间的差异要大许多. 这就加大了人们在建设自己的应用是选择合适的数据库的难度.

虚拟化的逆袭:网络虚拟化之OpenFlow和SDN

- - 弯曲评论
云计算的发展,是以虚拟化技术为基础的. 云计算服务商以按需分配为原则,为客户提供具有高可用性、高扩展性的计算、存储和网络等IT资源. 虚拟化技术将各种物理资源抽象为逻辑上的资源,隐藏了各种物理上的限制,为在更细粒度上对其进行管理和应用提供了可能性. 近些年,计算的虚拟化技术(主要指x86平台的虚拟化)取得了长足的发展;相比较而言,尽管存储和网络的虚拟化也得到了诸多发展,但是还有很多问题亟需解决,在云计算环境中尤其如此.

普通 vs 文艺 vs 二逼

- 貝殼 - The Only Exception

服务发现:Zookeeper vs etcd vs Consul

- - 企业架构 - ITeye博客
服务发现:Zookeeper vs etcd vs Consul. 【编者的话】本文对比了Zookeeper、etcd和Consul三种服务发现工具,探讨了最佳的服务发现解决方案,仅供参考. 如果使用预定义的端口,服务越多,发生冲突的可能性越大,毕竟,不可能有两个服务监听同一个端口. 管理一个拥挤的比方说被几百个服务所使用的所有端口的列表,本身就是一个挑战,添加到该列表后,这些服务需要的数据库和数量会日益增多.

学界 vs. 商界

- Yuli - 科学松鼠会
汉化: Oicebot & Ent. 0x5f375a86来自一个传奇算法,出自John Carmack开发的《雷神之锤3》的3D引擎. 这个引擎的源代码里包括一个反平方倒数的算法,其速度要比标准的牛顿迭代法快上几十倍,而其中的关键是一行神秘的代码和一个莫名其妙的数字:[ i   = 0x5f3759df - ( i >> 1 ); // what the fuck.