虚拟机好,还是容器好。它们有什么区别?
容器是一种轻量级、可移植、自包含的软件打包技术,
使应用程序可以在几乎任何地方以相同的方式运行,
简明而言,docker相当于跑应用的容器。
在运行环境中,应用及其相关的依赖被隔离在容器里,
互不干扰,但却共享同一个操作系统内核。
虚拟机通过模拟硬件环境,并启动完整的操作系统为应用运行提供环境。
容器与虚拟机的共同点与差异点如下:
共同点:容器和虚拟机都是为应用提供封装与隔离。
差异点:
(1)容器由2部分组成,分别是应用程序本身以及依赖包。
这里的依赖:比如应用程序需要的库或其他软件容器在Host操作系统的用户空间中运行,与操作系统的其他进程隔离。
由于所有的容器共享同一个主操作系统,所以在体积上比虚拟机小。另外,启动容器不需要启动整个操作系统,所以容器部署和启动速度更快、开销更小,也更容易迁移。
(2)传统的虚拟化技术,比如VMWare、KVM、Xen,目标是创建完整的虚拟机。
为了运行应用,除了部署应用本身及其依赖(通常几十MB),还得安装整个操作系统(几十GB)。
两者的隔离策略不同,容器是进程级的资源隔离,虚拟机是操作系统级的资源隔离。
在资源损耗上,容器一般资源损耗率在在1-5%,虚拟机在5%-15%。
在高可用策略上,容器资源是弹性伸缩的,负载均衡,虚拟机则是通过备份、异地容灾和迁移实现资源高可用。
虚拟机更擅长于彻底隔离整个运行环境。例如,云服务提供商通常采用虚拟机技术隔离不同的用户。
而Docker通常用于隔离不同的应用,例如前端,后端以及数据库。
白话总结:
统称 Linux (如下图)
Docker理解成是linux下的 虚机机
(用windows系统或者软件,用虚拟机 Virtualization Station)
|