98.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10

Docker是一个开源应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。虚拟机可以虚拟出一个完成的沙盒化平台,让开发者可以在完全隔离实体机的状态下开发或者运行程序。两者有什么区别呢?

运行架构

98-1.jpg?x-oss-process=image/auto-orient,1/quality,q_90/watermark,image_bG9nby5wbmc_eC1vc3MtcHJvY2Vzcz1pbWFnZS9yZXNpemUsUF8yMA,g_center,t_50,x_10,y_10

上图详解

在上图中,左侧为VM,右侧为CONTAINER。

VM和CONTAINER的最底层皆为基础设施服务器。

VM第二层(倒数)为虚拟化平台,而CONTAINER则是主机系统。

VM第三层运行虚拟系统,在虚拟系统中安装对应服务,最后运行应用。

CONTAINER第三层则是自身容器,在容器内运行对应服务,及相关的应用。

容器一般会封装类库及应用,无需像虚拟机那样分别搭建。

两则对比

对比表格:

CONTAINER VM
启动速度 秒级 分钟
运行性能 接近原生 百分之95
磁盘占用 MB GB
数量 成百上千 约十几台
隔离能力 进程级别 系统级别
操作系统 只支持Linux 几乎所有
封装程度 只打包项目代码和依赖关系 完整操作系统

对比详解

CONTAINER的启动速度极快,几乎是秒级的;VM则是分钟级,因为要等里面运行的虚拟系统慢慢的启动。

CONTAINER因为是进程级别运行,几乎是原生级运行性能;VM是系统内再虚拟系统,所以会有性能耗损。

CONTAINER占用的资源极小,几百MB即可跑一个服务;VM不用说别的,就单虚拟系统就要几个GB了。

CONTAINER因为占用资源小,故一台服务器运行百个千个不成问题;VM的资源占用较大,所以一台服务器无法跑太多。

当前的CONTAINER内部环境只支持Linux,所以一些运行在Windows的程序无法被封装;VM则没有任何限制,因为它支持几乎所有的操作系统。

CONTAINER只能打包项目代码和依赖关系,所以可运行的应用程序有限;VM可运行完整操作系统,所以理论支持所有应用。


 评论