翻译,原文请见https://www.backblaze.com/blog/vm-vs-containers/

在这里插入图片描述

容器和虚拟机都能很好地利用计算机软硬件资源,当然容器技术是新兴的,并且在各种数据中心变得非常流行。如果你正在寻找如何在云上运行服务的方案,那么需要了解这些虚拟化技术,它们之间有何异同,最合适的使用场景,这里是我们的快速入门。

基本定义 — 虚拟机和容器

什么是虚拟机

虚拟机是一个计算机系统的仿真,简单来说,虚拟机可以实现在一台物理计算机上模拟多台计算机运行任务。
操作系统和应用共享一台或多台主机(集群)的硬件资源,每台VM有自己的OS,硬件资源是虚拟化的。管理程序(hypervisor)负责创建和运行VM,它连接了硬件资源和虚拟机,完成server的虚拟化。
由于虚拟化技术和云服务的出现,IT部门通过部署VM可以可减少cost提高效率。
在这里插入图片描述
VMs也消耗大量系统资源,每个VM不仅运行一个OS的完整copy并且需要所有硬件的虚拟化copy,这消耗大量RAM和CPU。相比单独计算机,VM是比较经济的,但对于一些应用VM是过度浪费的,需要容器。

虚拟机的好处

  • APPs可以使用所有OS资源
  • 已有管理工具
  • 已有安全工具
  • 更好的安全控制

什么是容器

容器是将操作系统虚拟化,这与VM虚拟化一个完整的计算机有所不同。
容器是在操作系统之上,每个容器共享OS内核,执行文件和库等。共享的组件是只读的,通过共享OS资源能够减少复现OS的代码,意味着一台server仅安装一个OS可以运行多个任务。容器是非常轻量的,仅仅MB水平并且几秒即可启动。相比容器,VM需要几分钟启动,并且大小也大很多。
与VM相比,容器仅需OS、支撑程序和库文件便可运行应用,这意味你可以在同一个server上相比VM运行2-3倍多的应用,并且,容器能帮助创建一个可移植的,一致的开发测试部署环境。
在这里插入图片描述
容器类型

  • Linux Container(LXC) LXC是一种OS Level的虚拟化方法,可以实现在一台主机运行多个Linux操作系统。
  • Docker Docker开始项目是构建单一应用的LXC容器,引入了一些使容器便于移植和灵活使用的改进,后来开发了自己的容器运行环境。概况来说,Docker是一个Linux工具,能够创建,移植和运行容器

容器优势

  • 减少IT管理资源
  • 减少snapshot大小
  • 更快的app开发部署
  • 减少和简化安全更新
  • 更少的代码传输,移植

虚拟机应用 vs 容器应用

虚拟机和容器都有优势和劣势,如何选择取决于具体的需求,但有些规则可以参考。

  • VM非常适合当应用运行时需要所有OS资源和功能的场景,如果需要运行多个这样的应该,可以使用VMs
  • 容器适合在更少的server上运行更多的应用。

在这里插入图片描述
对于大多数,理想的是同时使用VM和容器,VM的灵活性与容器的资源使用少可以共同满足最大化的功能需求。
如果你的组织中正运行着大量的相同OS实例,你可以考虑容器是不是一个更好的选择了,可以帮助减少大量时间和内存消耗。

相关阅读
https://stackoverflow.com/questions/16047306/how-is-docker-different-from-a-virtual-machine

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐