当前位置:首页 > 虚拟机 > 正文

虚拟机和容器分别是怎么隔离的


一、docker容器和虚拟机的区别

容器技术有很多种,目前最流行的是Docker,网易云也使用了Docker。服务器虚拟化解决的核心问题是资源分配,而容器解决的核心问题是应用开发、测试和部署。虚拟机技术通过Hypervisor层对底层基础设施资源进行抽象,提供相互隔离的虚拟机。通过统一配置和管理,可以有效提高计算资源的可操作性、可维护性以及资源利用率。同时,虚拟机提供了对宿主机没有影响的客户操作系统,可以提供可控的测试环境。它还可以屏蔽底层硬件甚至基础软件的差异,使应用程序很大程度上兼容。无论虚拟化技术多么强大,计算、I/O和网络性能都必然会降低。最后,运行完整的来宾操作系统还需要额外的软件层。严格来说,容器技术并不是虚拟化。它没有客户操作系统并使用共享内核。容器可以被视为软件供应链中的容器。它们可以封装应用程序所需的运行环境、缓存环境、数据库环境等,以最简单的方式支持应用程序运行,当然也能提供更好的性能。Docker镜像功能使这种方法变得简单明了。当然,由于共享内核,容器隔离性不如虚拟机。更重要的是,得益于Docker的特性,基于容器封装,企业可以很好地实现CloudNative(为云而生的架构),包括让大家耳熟能详的微服务架构。DevOps使开发团队能够从运维工作的麻烦中解放出来,让应用程序能够快速启动和快速迭代。微服务架构下,系统被划分为多个可以独立开发、测试和部署的服务。同时,我们也可以只扩展需要扩展的部分,成为三头系和六臂哪吒,而不是一直变成三臂阿孙悟空。其他主题包括设计微服务、基于容器的扩展部署以及实现高可用性。


二、容器和虚拟机的区别

与虚拟机相比,容器具有更高的资源使用效率,因为它们不需要为每个应用程序提供单独的操作系统——实例规模更小,创建和迁移速度更快。这意味着单个操作系统可以承载比虚拟机更多的容器。

容器中的应用进程直接运行在主机的内核上。容器没有自己的内核,也没有硬件虚拟化。相反,该过程被封装和隔离。

容器可以看作是安装了一组特定应用程序的虚拟机。它直接使用主机的内核。与虚拟机相比,它具有更少的抽象层,并且更加轻量级和可启动。更快等等。云容器具有更高的资源使用效率,这是虚拟机无法比拟的。

容器完全使用沙箱机制,相互之间不会有任何接口(类似于iPhone应用程序)。几乎没有性能开销,可以轻松地在机器和数据中心上运行。最重要的是它们不依赖于任何语言、框架或系统。

与虚拟机相比,docker的隔离性较弱。Docker是进程之间的隔离,虚拟机可以实现系统级的隔离。安全性:Docker的安全性也较弱。

启动很快。容器中的应用程序直接是底层系统的进程,而不是虚拟机内部的进程。因此,启动容器相当于在本地机器上启动一个进程,而不是启动操作系统,速度要快得多。