Docker原理01

首先聊一下虚拟化技术。

虚拟化离我们很近,平时我们接触的虚拟化技术种类很多,比如硬件虚拟化(超线程技术),虚拟设备(虚拟光驱、虚拟软件、WinMount)、虚拟网络(VPN),桌面虚拟化(虚拟桌面、远程桌面),虚拟内存(利用交换文件或交换分区扩展系统可用内存),存储虚拟化(硬盘分区,网络硬盘映射),各类游戏机模拟器等。有些技术用的是如此普遍,你并不一定觉得它应该归类到虚拟化技术之中。但是,一旦提到虚拟化技术,你一定会想到其中一个,那就是虚拟机。

虚拟机技术按实现方式,分为纯硬件虚拟化、纯软件虚拟化及基于硬件辅助的软件虚拟化。其中纯硬件虚拟化,一般在大型机上实现的比较多,操作系统比较单一(其实支持该硬件架构的操作系统就可以,但多数情况下同一型号大型机操作系统的确比较单一),硬件架构复杂。纯软件虚拟化,其实现技术比较复杂,一般通过hypervisor提供硬件虚拟层,支持多种操作系统。时至今日,很多设备都提供了硬件辅助虚拟化的功能,这大大降低了虚拟机管理软件的实现难度,并增强了虚拟机的执行效率,所以现在一般的虚拟化软件都支持基于硬件辅助的软件虚拟化。

虚拟机技术按虚拟化程度分为三种,第一种是完全虚拟化,第二种准虚拟化,第三种是操作系统级层虚拟化。其中,
完全虚拟化,直接用软件/硬件辅助方式,不修改Guest,模拟虚拟机的全部硬件的技术,一般支持多种操作系统,但效率一般不高;
准虚拟化,直接用软件/硬件辅助方式,并同时通过修改Guest,对其进行一定程度的“欺骗”,实现与hypervisor相配合,实现虚拟化的技术,一般支持多种操作系统,运行效率比较高;
操作系统层虚拟化,是利用操作系统特性,利用一个操作系统内核,模拟多台虚拟设备的方式,由于一般需要共享操作系统内核,一般只支持一类操作系统;

还有一类特殊的虚拟机软件,叫跨平台虚拟化,允许针对特定CPU或者操作系统的软件,不做修改就能运行在其他平台上。如Wine(在Linux上模拟Windows应用),还有我们用的各类游戏模拟器(在Windows/Linux上模拟红白机FC、Projetc64、PSP)等。

那我们回过头来看下Docker的虚拟化方式与普通虚拟化方式的区别:
A、Dcoker虚拟化
Dcoker虚拟化
B、VMware VirtualBox虚拟化
VMware VirtualBox虚拟化

比较下来就很清楚了:

项目 Docker VMware VirtualBox
虚拟化技术 纯软件虚拟化 纯软件虚拟化+基于硬件辅助的软件虚拟化
虚拟化程度 操作系统级层虚拟化 完全虚拟化+准虚拟化
硬件抽象层 不需要 hypervisor
运行效率 安装插件前,效率较低;安装插件后,效率较高
支持系统 Linxu各发行版 硬件架构支持即可安装
需要安装Guest系统 共享内核,应用软件需要安装 完全安装

Leave a Reply

Your email address will not be published. Required fields are marked *

*