抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

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

运行架构

上图详解

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

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

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

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

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

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

两则对比

对比表格:

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

对比详解

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

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

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

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

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

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

评论