主机级虚拟化
主机级虚拟化技术
为每一个封闭的实例,提供的是一个从底层硬件开始一直到高层的基础环境。也就是说每一个实例都拥有自己独立的且隔离于其它实例的基础硬件平台,如CPU,内存等等,在这硬件平台上需要部署完整意义上的操作系统,在操作系统上有内核空间,内核空间里有用户空间,从而在用户空间中跑进程。
主机级虚拟化,由于做了两级内核,虚拟机自己有一级,hypervisor会有性能损耗,但是隔离性是非常好的。但过于重量级。
容器级虚拟化
将内核分为多个空间,然后每个空间能够提供一个完整意义上的程序运行环境,容纳了文件,系统和进程以及彼此间隔离的一些组件。我们把这些技术称之为容器
为什么出现容器技术
如果现在我打算在一台完全隔离的环境中,尽量不影响其它应用的情况下,安装一个tomcat。做为一个程序猿来讲,发部一个新程序就要运行在tomcat上测试下。这时候我提供给用户的仅仅是一个虚拟机,即便安装好操作系统,用户还得安装tomcat等,会非常麻烦,过程就感觉很重量。因为我们额外步骤会非常的多。所以这种虚拟化方式过于重量级,尤其在某些轻量级的需求面前它就显得欲发重量。所以在这种情况下就出现了容器技术。
容器技术:
用户空间仅仅运行用户进程,那么就可以把虚拟出来的内核给剥离掉。给用户一个chroot环境,在这个虚根下,能够隔离和其它用户相关的用户环境。 在内核中的一个逻辑级别能够设置为隔离开来的区域,彼此之间互相不干扰,不影响的话。那么我们就可以做出来仅在用户空间,就能实现隔离的组件来。那这个在用户空间就能实现的组件就称为“容器”。每一个空间就称为一个容器,因为每一个空间都容纳了一堆的进程和用户帐号文件等等。
容器与VM比较图: