容器与虚拟化技术的思路与区别
虽然二者均属于虚拟化的技术,目标是将应用程序以及其需要的环境打包起来,建立与其他应用程序孤立的环境,以实现不同硬件环境之间的移动。但是二者的实现方法与思路完全不同。
容器是以应用程序为中心构建环境,虚拟化以操作系统为中心构建环境。容器直接将一个应用程序所需的相关程序代码、函数库、环境配置等都打包起来建立环境。虚拟化技术则从 操作系统下手,目标时建立一个可以用来执行一个完整操作系统的执行环境。
区别:
- 虚拟机需要安装操作系统才能执行应用程序,而容器则不需要安装操作系统就可以运行。
- 容器不是在操作系统外来建立虚拟环境的,而是在操作系统的核心系统层来打造执行环境。
- 容器技术采用共享Host OS的做法,不需要在每一个容器内执行Guest OS,因此建立容器不需要等待操作系统的开机时间,分钟甚至秒级别的启动,远比需要数分钟甚至数十分钟的虚拟机来的快。
容器技术解决的问题:
通过简单的观察我们可以发现,容器技术的出现时为了解决多操作系统/应用程序堆栈的问题:
- 在单台服务器当中为所有虚拟机实例使用相同的操作系统对于大部分的数据中心来说不算是真正的限制。流程控制可以轻松地管理这些变化。
- 许多应用程序队长都是相同的。
- 对于大规模集群来说,在本地硬盘当中存储操作系统副本将会使更新过程变得更为复杂。