Docker与虚拟机区别详解(图文全面总结)

转自 https://mp.weixin.qq.com/s/ThbC3-zozCsB-Hx9r2rdGA

Docker容器是非常核心的云原生技术,也是目前微服务的核心技术,下面我就全面来详解Docker及虚拟机核心区别@mikechen

Docker

Docker 是一个开源的容器化平台,能够将应用程序、及其依赖环境打包成轻量级、可移植的容器。

图片

为什么Docker如此之风靡?原因很简单:因为Docker能很好的解决在不同环境中运行一致性,并且占用的资源还少,而且还快。

所以说,好的东西,就应该得到更多人的喜欢,因为Docker确确实实解决了我们平常开发和运维的问题。

比如:在如今的微服务架构中,我们可以将应用程序拆分成多个独立的服务,每个服务运行在独立的容器中。

这样,不仅方便开发、测试、和部署,而且Docker 容器可以在不同的操作系统和平台上运行,确保跨平台的一致性。

多个容器可以在同一台计算机上运行,并与其他容器共享其OS内核,每个容器在用户空间中作为隔离的进程运行。

虚拟机

虚拟机,全程是Virtual Machine,简称 “虚拟机VM”。

虚拟机,是一种利用软件模拟的计算机系统,它能够在物理硬件的基础上,运行多个虚拟计算机。

如下图所示:

虚拟机,是基于物理机(宿主机)上运行的独立计算环境,拥有独立的操作系统、应用程序、和资源。

比如:一台服务器,可以模拟出多台“虚拟机”。

这个时候,虚拟机运行在一个物理主机上,它的硬件资源(如:CPU、内存、磁盘...等),由宿主机提供并被虚拟化。

虚拟机的管理工具,常见的包括 :VMware、Hyper-V... 等,主要用于创建/和管理虚拟机。

虽然,看上去是多了几台“服务器”,但是多个虚拟机的操作系统,是共享同一个硬件环境中并存运行。

虽然虚拟机、和容器都是虚拟化技术,但它们的运行方式、和用途有所不同,下面我重点谈谈两者的区别@mikechen

Docker和虚拟机区别

图片

虚拟机更重,Docker相对轻量级

这是Docker和虚拟机最大的区别,我把它放到第一位。

首先,虚拟机提供完整的操作系统、和硬件环境,适用于需要隔离的多操作系统环境。

虚拟机由于每个虚拟机,都需要携带一个完整的操作系统(OS),这点非常的重要。

所以,采用虚拟机了,即使应用程序本身很小,整体体积也会因为操作系统的存在而变得庞大。

所以,这使得虚拟机不仅占用大量的存储空间,还在启动时需要加载整个操作系统,导致其启动时间较长、运行时的资源占用较高。

这也是为什么?Docker虚拟化技术风靡的最重要的原因。

Docker则通过共享宿主机操作系统的内核,避免了为每个应用程序分配一个独立的操作系统。

这样,每个 Docker 容器只包含:应用程序、及其依赖,减少了镜像的体积,并且启动速度更快,运行更加轻巧。

这也是 Docker 相比虚拟机最大的优势之一,尤其在微服务和容器化应用场景下显得非常有效。

虚拟机启动慢,Docker启动快

刚才我已经谈到了两者最大的区别,就谈到了虚拟机需要携带操作系统(OS)。

所以,虚拟机的启动时间较长,这就很正常了,因为:虚拟机,需要启动完整的操作系统。

而Docker容器,不需要启动操作系统,因此具有更快的响应速度。

虚拟机占用资源多,Docker占用资源小

由于虚拟机,需要运行一个独立的操作系统,因此资源开销较大。

比如:虚拟机需要占用较多的 CPU、内存、磁盘空间,并且每个虚拟机都有固定的资源分配。

所以,一台服务器一般也就不能虚拟很多“服务器”。

而Docker 容器,共享宿主机的操作系统内核,不需要额外的操作系统开销。

所以,占用资源更小,是“进程”级别的,所以资源利用率更高。

虚拟机适用重量级隔离,容器轻量级隔离

当然,说了这么多,也不是说虚拟机一无是处,关键是用对应用场景。

比如:虚拟机就适用于需要强隔离的多操作系统环境,常用于运行不同的操作系统、测试环境、或需要高安全性的场景。

而Docker容器,更适用于:微服务架构、持续集成与交付(CI/CD)、高密度部署、以及轻量级的隔离场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值