Docker和虚拟机(VM)在大型架构经常被涉及,但很多同学并不清楚区别细节,下面我重点详解Docker和虚拟机(VM)核心区别@mikechen
Docker
Docker是一种开源的应用容器引擎,它可以让开发者打包他们的应用,以及依赖包到一个轻量级、可移植的容器中。
Docker 在现代软件开发和运维中取得了巨大成功,并成为了容器化、和云原生技术的核心。
与虚拟机(VM)相比,Docker容器不需要运行一个完整的操作系统,而是共享宿主机的内核。
Docker 使用操作系统级虚拟化(而非硬件虚拟化),每个容器共享宿主操作系统的内核,但各自有独立的用户空间。
这意味着 Docker 容器几乎没有额外的虚拟化开销,能在同一台机器上运行更多的容器。
Docker非常适合构建微服务架构,每个微服务都可以打包成一个独立的容器。
虚拟机
虚拟机(Virtual Machine)是一种软件,它可以在一台物理计算机,上模拟出一台、或多台虚拟的计算机。
每台虚拟机都有自己的操作系统、内存、硬盘等,它们之间相互独立,就像是在不同的物理机上运行一样。
Docker和虚拟机区别
如下图:分别是Docker、与虚拟机的实现框架对比。
主要包含如下几点:
1.性能不同
Docker是基于容器技术的,容器共享宿主操作系统的内核,但每个容器运行在用户空间的独立环境中。
Docker容器非常轻量,启动迅速,消耗的资源较少。
容器共享宿主机的操作系统内核,因此相对于虚拟机,容器的性能更加接近宿主操作系统。
而虚拟机,是通过虚拟化技术模拟一台完整的计算机(包括:硬件、操作系统..等),所以,虚拟机更重,Docker更轻。
2.速度不同
docker启动速度极快,通常在几秒内完成,因为Docker容器直接运行在宿主操作系统上,无需启动完整的操作系统
而虚拟机,启动较慢,通常需要几分钟,因为虚拟机需要启动完整的操作系统(OS)。
3.隔离不同
虽然Docker容器,是相互隔离的,但它们共享宿主机的操作系统内核,因此,容器的隔离性相对于虚拟机来说较弱。
虚拟机是完全隔离的,每个虚拟机都有自己的操作系统、内核和硬件虚拟化层。
因此,虚拟机之间的隔离性非常强,不同虚拟机的操作系统、和内核不会互相影响。
4.迁移不同
容器,可以轻松地在不同环境之间迁移,比如:Docker的镜像可以在任何支持Docker的操作系统上运行,无论是开发环境、测试环境、还是生产环境。
而虚拟机,通常是与特定操作系统、和硬件紧密绑定的,因此在迁移和跨平台兼容性方面通常不如容器灵活。
5.应用不同
虚拟机,通过镜像实现环境交付,但镜像分发不够灵活。
Docker容器,通过Dockerfile记录构建过程,实现快速分发和部署,适合持续集成、和微服务架构。
陈睿mikechen
10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。
关注作者「mikechen」公众号,获取更多技术干货!

后台回复【架构】,即可获取《阿里架构师进阶专题全部合集》,后台回复【面试】即可获取《史上最全阿里Java面试题总结》