首先介绍下“虚拟化”这一概念:是一种资源管理技术,它抽象了计算机的实体资源(包括内存、存储、服务器、网络等等),并将这些资源进行转换,最终呈现出来加以运用,用户可以实现利用更优的组合状态来使用(简单理解:就是给用户提供了自定义去使用这些计算机的实体资源)
最常见的两种虚拟化技术:虚拟机与Docker(容器)
一、虚拟机
虚拟机的出现解决了一个服务器只能运行一个应用的问题,实现了操作系统/硬件的抽象。在物理服务器上搭建多个虚拟机,划分不同的计算资源,供上层应用使用。这就使得多个应用可以稳定安全地运行在同一个服务器,减少了服务器资源的闲置。
但这样也暴露了它的不足:在虚拟机技术中服务器与应用的映射关系从一对一变成了一对多,就会使得不同的虚拟机之间竞争宽带、宿主机端口资源(常说的端口被占)。负载较高时,虚拟机的性能就变得很差,资源利用下降,调度分发也变缓慢。
二、Docker
针对于上述虚拟机的缺点,Docker容器技术实现了对不同的应用进行隔离。
2.1 Docker的三大核心:
(1)镜像(Image):相当于停止运行的容器,内部是一个精简的操作系统(OS),同时还包括运行应用所必须的文件和依赖包。
(2)容器(Countainer):可以理解为运行时的容器,是依据镜像创建出来的。
(3)仓库(Image Repository):用于存储镜像文件。
一个镜像仓库服务包含多个镜像仓库;而一个镜像仓库中可以包含多个镜像。
2.2 Docker优势:
(1)轻量级的虚拟化,很轻松地创建、启动、停止和删除容器。
(2)超级集装箱:Docker可以装载系统、服务和应用,同时保证运行环境的统一性,能够很轻松的做到统一部署环境。
(3)多个容器共享一个操作系统,不需要Hypervisor(虚拟机监视器,用来建立与执行虚拟器的软件、固件和硬件),实现更轻松的迁移和秒级甚至毫秒级的启动时间。
(4)每个容器的命名空间唯一,所以实现了容器之间互不影响。这也使得运行在其中的应用程序实现独立和隔离的目的。