什么是容器技术?它与虚拟机技术有何区别?
容器技术是一种沙盒技术,主要目的是为了将应用运行在其中,与外界隔离;及方便这个沙盒可以被转移到其它宿主机器12。本质上,它是一个特殊的进程,通过名称空间(Namespace)、控制组(Control groups)、切根(chroot)技术把资源、文件、设备、状态和配置划分到一个独立的空间34。
容器技术与虚拟机技术有以下几个区别:
- 虚拟化层次:虚拟机技术是在硬件层面进行虚拟化,需要在每个虚拟机中安装一个完整的操作系统和应用程序;而容器技术是在操作系统层面进行虚拟化,只需要在每个容器中打包应用程序及其依赖项,共享宿主机的操作系统内核34。
- 资源占用:由于虚拟机需要运行多个操作系统实例,因此占用的物理资源较多,启动时间较长;而容器由于无需运行额外的操作系统实例,因此占用的物理资源较少,启动时间较短34。
- 隔离性:由于虚拟机完全模拟了硬件环境,并运行独立的操作系统实例,因此具有更高的隔离性和安全性;而容器由于共享宿主机的操作系统内核,并且只能使用内核提供的隔离功能,因此具有相对较低的隔离性和安全性