虚拟机(Virtual Machine)和容器(Container)的对比

    目前云计算平台经常使用的虚拟化技术有虚拟机(Virtual Machine)和容器(Container)两种。虚拟机已是比较成熟的技术,容器技术做为下一代虚拟化技术,国内的各厂商应用还不广,但彷佛其表明着将来的发展方向。linux

    先来看一下虚拟机和容器的架构图:编程

左图是虚拟机服务器

从下到上理解:网络

  • 基础设施(Infrastructure)。它能够是你的我的电脑,数据中心的服务器,或者是云主机
  • 主机操做系统(Host Operating System)
  • 虚拟机管理系统(Hypervisor)。利用Hypervisor,能够在主操做系统之上运行多个不一样的从操做系统。类型1的Hypervisor有支持MacOS的HyperKit,支持Windows的Hyper-V、Xen以及KVM。类型2的Hypervisor有VirtualBox和VMWare workstation。
  • 客户机操做系统(Guest Operating System)。假设你须要运行3个相互隔离的应用,则须要使用Hypervisor启动3个客户机操做系统,也就是3个虚拟机。这些虚拟机都很是大,也许有700MB,这就意味着它们将占用2.1GB的磁盘空间。更糟糕的是,它们还会消耗不少CPU和内存。
  • 各类依赖。每个客户机操做系统都须要安装许多依赖。若是你的应用须要链接PostgreSQL的话,则须要安装libpq-dev;若是你使用Ruby的话,应该须要安装gems;若是使用其余编程语言,好比Python或者Node.js,都会须要安装对应的依赖库。
  • 应用。安装依赖以后,就能够在各个客户机操做系统分别运行应用了,这样各个应用就是相互隔离的。

因为有了多个操做系统,因此虚拟机的架构中咱们知道每一个虚机中都有一个独立的Kernel.架构

什么是Kernel?

简单来说Kernel 就是链接操做系统(OS)和硬件(Hardware)的一个中间组件。编程语言

大概个架构图以下微服务

 

上面的右图是
测试

从下到上理解上图:云计算

  • 基础设施(Infrastructure)
  • 主操做系统(Host Operating System)。全部主流的Linux发行版均可以运行Docker。对于MacOS和Windows,也有一些办法”运行”Docker。
  • Docker守护进程(Docker Daemon)。Docker守护进程取代了Hypervisor,它是运行在操做系统之上的后台进程,负责管理Docker容器。
  • 各类依赖。对于Docker,应用的全部依赖都打包在Docker镜像中,Docker容器是基于Docker镜像建立的。
  • 应用。应用的源代码与它的依赖都打包在Docker镜像中,不一样的应用须要不一样的Docker镜像。不一样的应用运行在不一样的Docker容器中,它们是相互隔离的。

很明显图中只有一个操做系统,即只有一个独立的Kernel.spa

咱们知道每一个操做系统有多个进程(Process)

简单来说容器能够理解为进程沙盒(sandbox)

那到底这个进程沙盒里装了些什么呢?

  • process namespace (进程命名空间): 来规定可使用什么资源
  • Cgroups (控制组) : 来规定能够用多少资源:如CPU,内存, 网络等
  • Union-capable file system: 把不一样文件联合到一个挂载点的文件系统服务

在linux系统中有6种Namespace能够给linux资源提供进程级别的隔离。Namespace保证了每一个容器只能够看到它本身所拥有的环境,而且不会影响运行在其余容器中的进程。

Namespace也让容奇港拥有本身的网络设备,所以每个容器都有本身的IP地址和主机名,这让容器之间能够相互独立。 

相对虚拟机架构来说,容器架构有什么好处呢?

左图的虚拟机架构中,咱们的主机有Host 三个不一样的操做系统,这个就意味着须要模拟(emulate) 三个操做系统。
对比右图的容器架构中,咱们的3个容器都在一个操做系统上运行,并不须要模拟任何操做系统。因此相对左图咱们会消耗更少的资源,并达到跟虚拟机架构中等同的效果。

用一张图大概描述容器相对虚拟机的优点


 
对比图
  • 容器架构下降了硬件成本
  • 更快速的部署开发/测试/生产环境
  • 更简便的维护开发/测试/生产环境
  • 与微服务架构更为契合
 
参考:
https://www.jianshu.com/p/d132333dbf40
https://www.zhihu.com/question/48174633/answer/180743885
相关文章
相关标签/搜索