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

docker和虚拟化技术的区别


一、Docker容器与虚拟机区别我们传统的虚拟机必须模拟整个机器,包括硬件。每个虚拟机都需要自己的操作系统。虚拟机一旦开启,所有预先分配给它的资源都会被占用。应该是二进制文件和库,以及完整的用户操作系统。
容器技术与我们的宿主机共享硬件资源和操作系统,实现资源的动态分配。
容器包含应用程序及其所有依赖项,但与其他容器共享核心。容器在主机操作系统的用户空间中作为单独的进程运行。
虚拟机和容器基于硬件和操作系统。虚拟机有一个hypervisor层,hypervisor是整个虚拟机的心脏。它为虚拟机提供虚拟执行平台,管理虚拟机操作系统的运行。每个虚拟机都有自己的系统以及自己的系统库和应用程序。
容器没有Hypervisor层,每容器与主机共享硬件资源和操作系统,因此Linux容器中不存在Hypervisor带来的性能损失。
不过,虚拟机技术也有其优点。它可以为应用程序提供更加隔离的环境,不会因为应用程序漏洞而对主机造成任何威胁。它还支持操作系统之间的虚拟化。例如,您可以在Linux操作系统下运行Windows虚拟机。
从虚拟化角度来看,传统虚拟化技术对硬件资源进行虚拟化,而容器技术对进程进行虚拟化,提供更轻量级的虚拟化,实现进程和资源的隔离。
从架构上来说,Docker比虚拟化少了两层。它重写了Hypervisor层和GuestOS层,使用DockerEngine进行调度和隔离,所有应用程序共享主机OS,因此在体积上,Docker比虚拟机更轻,性能比虚拟化更好,接近裸机性能。
从应用场景来看,Docker和虚拟化各有擅长的领域,在软件开发、测试场景、生产运维场景等方面各有优缺点
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的快速迭代在开发、测试和部署方面节省了大量时间。
交付部署:虚拟机可以通过镜像的方式提供环境的一致交付,但镜像分发无法系统化;Docker将容器构建过程记录在Dockerfile中,可以实现在集群中的快速分发和部署;