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

说明虚拟机和容器的区别


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