前面
看到Docker技术是基于Linux的容器管理技术,就了解Linux的容器管理技术,然后看看与其他虚拟技术的区别。
传统虚拟技术
传统虚拟技术包括了VMware、Virtual Box、Virtual PC。(本人使用的就是VMare,运行以后机器非常慢!)
传统虚拟技术就是完整的一个系统,这里的系统就包括所有软件模拟出来的硬件设备,因此执行时性能比较差,但是能够模拟出一个不同于宿主的环境。
VM1 VM2 VM3 … …
VirtualBox or VMWare or …
Linux Kernel
硬件
Xen技术
Xen是在Linux环境中最早出来的虚拟化技术,就是在硬件与Linux内核之间插入一个Xen程序,开机的时候的bootloader原本是要载入Linux内核程序,改了载入Xen程序,而 Linux Kernel 和其他 VM 则是由 Xen 來管理 。
Linux Kernel VM1 VM2 VM3 … …
Xen
硬件
KVM技术
KVM与传统的虚拟化技术有点像,不同之处就是,虚拟机中所有进程有系统的内核管理,而传统的虚拟化技术是由虚拟系统进行管理。而且传统虚拟化需要用软件模拟出硬件(增加了进程!!!!!!),而KVM则与主系统共享资源,不会增加硬件模拟的负担。
VM1 VM2 VM3 … …
KVM (由内核管理)
Linux Kernel
硬件
LXC技术
技术的要点就是,在主系统的进程中,将虚拟机的进程伪装成主系统的进程,让主系统将其加入进程调度中,伪装是因为主系统本身会有一套属于调度系统的进程,而这些系统也会在虚拟机系统中,例如 Linux 的 init (PID = 1),如果直接将虚拟机的 Process 插入主系統的排成,可能造成系统错乱,因此 container 会将虚拟机的 process 伪装成其他 process 後才加入进程。