1.1 容器的发展历史和应用场景
1.1.1 虚拟化技术与容器技术的区别及其联系
虚拟化技术最初起源于20世纪60年代末,当时美国IBM公司开发了一套被称为虚拟机管理监视器(Virtual Machine Monitor)的软件。该软件作为计算机硬件层上面的一层软件抽象层,将计算机硬件虚拟分区成一个或多个虚拟机,并提供多用户对大型计算机的交互访问。
如今,虚拟化技术已成为一种被大家广泛认可的服务器资源共享方式,它可以在按需构建操作系统实例的过程中,为系统管理员提供极大的灵活性。但Hypervisor虚拟化技术仍然存在一些性能和资源使用效率方面的问题,因此出现了一种称为容器(Container)的新型虚拟化技术来帮助解决这些问题。
如果说虚拟化技术通过Hypervisor实现VM与底层硬件的解耦,那么容器(Container)技术就是一种更加轻量级的操作系统虚拟化技术。它是将应用程序及其运行依赖环境打包封装到标准化、强移植的镜像中,通过容器带有的引擎提供进程隔离、资源可限制的运行环境,实现应用与OS平台及底层硬件的解耦,一次性打包,实现了跨区域性的移植运行。
容器本身是基于镜像实现运行的,可部署在物理机或者虚拟机上,通过容器引擎与容器编排调度平台来实现容器化应用的生命周期管理。
虚拟化技术与容器技术的对比如图1-1所示。
图1-1 虚拟化技术与容器技术的对比
VM中包含GuestOS,调度与资源占用都比较重。而容器仅仅只包含应用运行时所需要的文件,管理容器就是管理应用本身。
如表1-1所示,容器具有极其轻量、秒级部署、易于移植、敏捷弹性伸缩等多种优势。VM是OS系统级隔离,而容器则是进程级隔离,但相对于VM来说,容器的安全性更弱一些,因此需要一些额外的安全技术或安全容器方案来弥补。
表1-1 虚拟化技术和容器化技术对比
作为云原生的核心技术,容器、微服务与DevOps/ CICD等技术已成为应用架构转型或实现技术中台不可或缺的组件。