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

容器与虚拟机的区别是什么


一、Docker容器与虚拟机区别我们传统的虚拟机需要模拟整个机器包括硬件。一旦虚拟机启动,分配给它的所有资源(包括应用程序)都会被消耗。必须有二进制文件和库以及完整的用户操作系统。
容器技术与我们的宿主机共享硬件资源和操作系统,实现资源的动态分配。
容器包含应用程序及其所有依赖项,但与其他容器共享内核。容器在主机操作系统的用户空间中作为单独的进程运行。
虚拟机和容器基于硬件和操作系统。虚拟机有一个hypervisor层,hypervisor是整个虚拟机的核心。它为虚拟机提供虚拟运行平台,管理虚拟机操作系统的运行。每个虚拟机都有自己的系统、系统库和应用程序。
容器没有Hypervisor层,每个容器与宿主机共享硬件资源和操作系统,因此Linux容器中不会出现Hypervisor带来的性能损失。
不过,虚拟机技术也有它的优点:可以为应用程序提供更加隔离的环境,不会因为应用程序漏洞而对主机造成威胁,并且支持跨操作系统虚拟化。例如,您可以在Linux操作系统上运行Windows虚拟机。
从虚拟化角度来看,传统虚拟化技术是对硬件资源进行虚拟化,而容器技术则是对进程进行虚拟化,可以更容易地虚拟化实现进程和资源的隔离。
从架构角度来看,Docker比虚拟化少了两层。它消除了hypervisor层和GuestOS层,使用DockerEngine进行调度和隔离,所有应用共享主机操作系统。从体积上来说,Docker比虚拟机更轻,提供比虚拟化更好的性能,接近于裸机。金属性能。
从应用场景来看,Docker和虚拟化各有擅长的领域,在软件开发、测试场景和生产运维场景上各有优缺点
Docker启动速度在秒级。虚拟机通常需要几分钟才能启动。
Docker需要的资源更少。Docker容器和内核交互几乎没有性能损失。性能优于通过管理程序层的虚拟化。
Docker更加精简。Docker的架构可以共享内核和通用应用程序库,并且使用很少的内存。在相同的硬件环境下,Docker运行的镜像远多于虚拟机,系统利用率非常高。
与虚拟机相比,Docker的进程间隔离性较弱,而虚拟机可以实现系统级隔离。
安全性:Docker的安全性也较弱。Docker的租户根与主机根相同。容器内的用户一旦从普通用户权限升级为root权限,将直接拥有宿主机的root权限,可以进行无限制的操作。虚拟机租户root权限和主机虚拟机root权限分离,虚拟机采用Intel的VT-d、VT-x等Ring-1硬件隔离技术。这种隔离技术可以防止虚拟机之间中断交互和交互,而容器仍然没有硬件隔离,这使得容器容易受到攻击。
可管理性:Docker的集中管理工具还没有完全开发出来。各种虚拟化技术都有成熟的管理工具。例如,VMwarevCenter提供全面的虚拟机管理功能。
高可用性和可恢复性:Docker的企业高可用性支持是通过快速重新部署来实现的。虚拟化拥有成熟的负载均衡、高可用性、容错、迁移、数据保护等保障机制,并经过了生产实践的检验。VMware可以承诺虚拟机99.999%的高可用性,确保业务连续性。
快速创建和删除:虚拟化创建只需几分钟,Docker的快速迭代保证了开发、测试和部署的大量时间节省。
部署部署:虚拟机可以通过镜像实现一致的环境部署,但Docker无法在Dockerfile中系统记录容器构建过程,可以实现集群内的快速分发和快速部署。