1. Docker与Vmware的异同

  • 本质上都是虚拟化技术,只是虚拟化的层面不同,但都需要有宿主机(或者叫做物理机)。Vmware虚拟化的是宿主机的硬件称为硬件虚拟化(Hardware Virtualization),Docker虚拟化的是宿主机的操作系统,称为操作系统虚拟化(OS Virtualization)。

    1.1 虚拟机模型 与 Docker模型

    1.1.1 虚拟机模型

    虚拟机使用时,首先要开启物理机,然后启动Hypervisor来接管硬件控制(Hypervisor会占有机器上的全部物理资源,如CPU、RAM、存储和NIC)。Hypervisor会将这些物理资源划分为虚拟资源,将这些资源打包进虚拟机(VM)的软件结构中,用户再在虚拟机上安装操作系统来供应用程序使用。

    1.1.2 容器模型

    容器模型使用时,物理机启动后OS也占用了全部硬件资源,在OS层之上安装容器引擎(如Docker),容器引擎可以获取系统资源,比如进程树、文件系统等,并将资源分割为安全的互相隔离的资源结构,称之为容器。每个容器看起来像一个真实的操作系统。

    1.2 使用两种模型的差别

  • 既然虚拟机模型与Docker模型都能虚拟化出一个虚拟环境,两者的差别在哪?答案是耗时、物理机资源的消耗、虚拟环境的反应速度还有虚拟环境能做的事情不同。

  1. 由于虚拟机虚拟出来的是另一台电脑,因此需要虚拟出电脑的必要硬件等资源,这个过程是非常耗时的,而且占用大量资源,导致物理机负载压力大,且虚拟出来的环境所安装的操作系统与物理机的操作系统认证、安全性等都是分隔的,但是虚拟机是可以认为是一个另外的电脑,可以做与物理机几乎相同的事情。
  2. 容器模型是共享物理机操作系统内核,因此内核中只能实例一次的功能不可在容器中复用,但是资源消耗小,这个轻量级远是虚拟机模型不可比拟的。