虚拟化 VS 容器化

【编者的话】以 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? 

翻译:DockerOne/刘梦馨 校对:李颖杰

译者介绍

刘梦馨,一个做过前端、后端和测试的运维人员,在阿里巴巴挖宝,顺便去点亮 DBA 的技能树。关注Docker,虚拟化和云计算技术。
 

时间: 2024-08-12 19:54:32

虚拟化 VS 容器化的相关文章

Docker---大型项目容器化改造

虚拟化和容器化是项目云化不可避免的两个问题.虚拟化由于是纯平台操作,一个运行于linux操作系统的项目几乎不需要做任何改造就可以支持虚拟化.而项目如果要支持容器化则需要做许多细致的改造工作.容器化相对于虚拟化的优势也相当明显,运行于裸机性能高,秒级启停容器,更不用说开发.测试.布署一致的环境(DevOps理念),以及上篇提到的微服务的能力.大家还可以找到各种文章来介绍容器化(Docker)的知识,这里我们就不一一赘述.下面我们会根据项目的实际情况,介绍下容器化改造会面临的问题和解决方案. 一个几

2019 DevOps 必备面试题——容器化和虚拟化

原文地址:https://medium.com/edureka/devops-interview-questions-e91a4e6ecbf3 原文作者:Saurabh Kulshrestha 翻译君:CODING 戴维奥普斯 让我们看看你对容器和虚拟机的了解程度. Q1. 什么是容器? 容器提供了从开发人员的笔记本电脑到测试环境.从类生产环境到生产环境一致的运行环境. 接下来给出容器的定义,容器由一个完整的运行环境组成:将一个应用程序,以及它所有的依赖项.库和其他二进制文件,以及运行它所需的配

从研发到生产的容器化

Coding-Job:从研发到生产的容器化融合实践 大家好,我是来自 CODING 的全栈开发工程师,我有幸在 CODING 参与了 Coding-Job 这个容器化的编排平台的研发.大家对 CODING 可能比较了解, Coding.net 是一个一站式开发平台,具有代码托管,任务管理,产品演示和 WebIDE 等功能.整体功能看起来比较复杂且较为分散. 这是我们 Coding 的架构演进流程.那么怎么评判一个系统复不复杂,个人觉得看两个指标,一个就是运维人员用多久时间可以把新的代码部署上线.

深度解析容器化技术在广发证券交易系统的应用【转】

原文链接:http://geek.csdn.net/news/detail/94850 本文是docker落地比较好的实践案例,文中很多地方多可以学习一下,以下是摘录: 为什么要容器化 对传统的垂直行业来讲,Docker也是最近几年才出来的技术,技术理念非常先进,因此采用Docker容器化技术对我们而言需要综合的评估,但是我们为什么要去做呢?首先,从行业现状来说,证券行业一方面量化交易.高频交易.实时风控要求高,其次,行业创新非常多,创新业务也很频繁,另外,监管方面,证监会证监局对我们要求交易事

有容云:微服务容器化的挑战和解决之道

注: 本文根据6月是18日七牛云微服务课堂-微服务容器化的挑战和解决之道演讲内容整理而成,演讲者:有容云联合创始人兼首席架构师马洪喜,与大家一起探讨了如何通过容器技术将微服务和 DevOps 落地. 嘉宾介绍: 马洪喜,此前担任 Rancher Labs 中国区技术负责人.Citrix 公司资深架构师.Oracle 公司虚拟化产品开发经理等职务,在容器云.IaaS 云.桌面云建设方面拥有丰富的经验. 单体架构 VS 微服务架构 传统单体架构存在各种各样的问题,如加载编译耗时长.代码管理复杂.横向

Coding-Job:从研发到生产的容器化融合实践

大家好,我是来自 CODING 的全栈开发工程师,我有幸在 CODING 参与了 Coding-Job 这个容器化的编排平台的研发.大家对 CODING 可能比较了解, Coding.net 是一个一站式开发平台,具有代码托管,任务管理,产品演示和 WebIDE 等功能.整体功能看起来比较复杂且较为分散. 这是我们 Coding 的架构演进流程.那么怎么评判一个系统复不复杂,个人觉得看两个指标,一个就是运维人员用多久时间可以把新的代码部署上线.比如说我之前所在的创业团队,每次部署都是晚上九点以后

微服务容器化的挑战和解决之道

注: 本文根据6月是18日七牛云微服务课堂-微服务容器化的挑战和解决之道演讲内容整理而成,演讲者:有容云联合创始人兼首席架构师马洪喜,与大家一起探讨了如何通过容器技术将微服务和 DevOps 落地. 嘉宾介绍: 马洪喜,此前担任 Rancher Labs 中国区技术负责人.Citrix 公司资深架构师.Oracle 公司虚拟化产品开发经理等职务,在容器云.IaaS 云.桌面云建设方面拥有丰富的经验. 单体架构 VS 微服务架构 传统单体架构存在各种各样的问题,如加载编译耗时长.代码管理复杂.横向

PPT下载 | 亿级用户万台服务器背后,vivo云服务容器化如何破茧化蝶?

2018年数人云Meetup第一站,联合vivo在深圳举办 Building Microservice 系列活动第一期.本次技术沙龙vivo.中兴通讯.华为.数人云共同派出技术大咖,为开发者们带来有关微服务.容器化.配置中心.服务网格等领域的实战与干货分享. 数人云Meetup每月一期,欢迎大家来面基.学习.本文为vivo云计算架构师袁乐林分享的"vivo云服务容器化实践"现场演讲实录. 今天讲的内容主要是介绍技术背景,产品的技术架构,我们关键技术的实践,前车之鉴,以及对下一代云服务架

亿级用户万台服务器背后,vivo云服务容器化如何破茧化蝶?

2018年数人云Meetup第一站,联合vivo在深圳举办 Building Microservice 系列活动第一期.本次技术沙龙vivo.中兴通讯.华为.数人云共同派出技术大咖,为开发者们带来有关微服务.容器化.配置中心.服务网格等领域的实战与干货分享. 数人云Meetup每月一期,欢迎大家来面基.学习.本文为vivo云计算架构师袁乐林分享的"vivo云服务容器化实践"现场演讲实录. 今天讲的内容主要是介绍技术背景,产品的技术架构,我们关键技术的实践,前车之鉴,以及对下一代云服务架