容器vs虚拟机
- 为什么用虚拟机
- 什么是容器
- 容器vs虚拟机
Docker被称为是轻量级的虚拟化。
首先,一般开发所需要的都是Linux环境,但我们大多数人的电脑都是Windows系统。所以要安装虚拟机,目的是为了在我们当前所使用的Windows上面安装上Linux环境的镜像和使用这个虚拟机的软件【比如VMWare、VirtualBox】,虚拟出来一个计算机。这些虚拟的多台计算机每台都有各自的CPU、内存、硬盘、光驱、软驱、网卡、声卡、键盘、鼠标、串口、并口、USB等“硬件”设备。
为什么用虚拟机
虚拟机简单方便,当一个应用服务用户量非常大,需要增加服务器来分担并发,那么如果全用物理机,不仅占用空间,接线和操作,成本还非常高。
什么是容器
在Linux重,容器是一种进程隔离的技术,应用可以运行在一个个相互隔离的容器中,与虚拟机不同的是,这些应用运行时公用着一个Kernel(内核),容器技术大大提升了对系统资源的利用率,也提高了应用部署的迁移效率。
前文提到的Docker,它是容器的运行平台,Docker同时又是容器的管理工具。
容器vs虚拟机
从技术角度来讲,容器就是由一堆进程隔离技术支撑起来的相互隔离的盒子,不同的盒子可以安装不同的应用,通过盒子的隔离从而实现应用的隔离。 跟虚拟机不同的是,虚拟机中的应用调用的是各自虚拟机内核的资源,而容器中的应用共享着一个Kernel。也就是虚拟机相当于一台独立的电脑,每创建一个虚拟机,都会有自己独立的操作系统内核。而容器则只是隔离开了一个一个的应用,没有自己独立的操作系统。 容器依靠着Linux内核中众多的进程隔离技术,如:namespace
cgroups
selinux
等,这些进程隔离技术就支撑了操作系统之上运行着一个一个相互隔离的容器。
功能上差异 | VM | Docker |
---|---|---|
隔离性 | 强 | 较弱 |
计算资源开销 | 大 | 小 |
镜像大小 | 几百MB到几GB | 几MB |
启动速度 | 数秒至数分钟 | 毫秒级 |
快速扩展能力 | 一般 | 强 |
跨平台迁移能力 | 一般 | 强 |
对微服务架构的支持 | 一般 | 强 |
对Devops的支持 | 一般 | 强 |