虚拟机
虚拟机VM是物理硬件的抽象,它将一台服务器变成很多服务器。
虚拟机管理程序允许多个VM在单台计算机上运行,每个VM均包含操作系统。

Docker
Docker是一个开源项目,诞生于 2013 年初,最初是 dotCloud 公司内部的一个业余项目,它基于 Google 公司推出的 Go 语言实现。
容器是应用程序层的抽象,将代码和依赖项打包在一起,如下图所示:

多个容器可以在同一台计算机上运行,并与其他容器共享其OS内核,每个容器在用户空间中作为隔离的进程运行。
Docker和虚拟机区别
如下图分别是Docker与虚拟机的实现框架对比:
比较上面两张图,docker与虚拟机的区别,主要包含如下几点:
1.携带内容不同
虚拟机是携带操作系统,本身很小的应用程序却因为携带了操作系统而变得非常大很笨重。
Docker是不携带操作系统的,所以Docker的应用就非常的轻巧。
2.启动速度不同
docker 启动快速属于秒级别,虚拟机通常需要几分钟去启动。
3.性能损耗不同
docker 需要的资源更少,docker 在操作系统级别进行虚拟化,docker 容器和内核交互,几乎没有性能损耗。
4.系统利用率不同
Docker对系统资源的利用率很高,一台主机上可以同时运行数千个 Docker 容器。
容器除了运行其中应用外,基本不消耗额外的系统资源,使得应用的性能很高,同时系统的开销尽量小。
传统虚拟机方式运行 10 个不同的应用就要起 10 个虚拟机,而Docker 只需要启动 10 个隔离的应用即可。
5.管理部署不同
使用 Docker只需要小小的修改,就可以替代以往大量的更新工作,所有的修改都以增量的方式被分发和更新,从而实现自动化并且高效的管理。