什么是Docker 【畅想+杂谈|五分钟学GIS | Docker在GIS中的应用】Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
Docker起源 Docker的思想来自于集装箱,集装箱可以把货物规整地摆放起来,并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响,任何一艘大船都可以运送这样的集装箱。使用Docker,开发者的应用可以实现一次打包,多处运行,即Docker提出的“Build once,Run anywhere”。
为什么用Docker 举个简单的应用场景例子,假设用户试图基于最常见的LAMP(Linux + Apache + MySQL + PHP)组合来运维一个网站,按照传统的做法,首先,需要安装Apache、MySQL 和PHP以及它们各自运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则意味着更多的时间代价和不可控的风险。可以想象,如果再加上更多的应用,事情会变得更加难以处理。更为可怕的是,一旦需要服务器迁移(例如从阿里云迁移到腾讯云),往往需要重新部署和调试。这些琐碎而无趣的“体力活”,极大地降低了工作效率。
而Docker提供了一种更为聪明的方式,通过容器来打包应用,意味着迁移只需要在新的服务器上启动需要的容器就可以了。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。
为什么不用虚拟机 容器和虚拟机这么类似,为什么不直接用虚拟机?简单点说,Docker 容器相对于虚拟机 有以下三个优点:
1.启动速度快,容器通常在一秒内可以启动,而虚拟机通常要更久;
2.资源利用率高,一台普通PC机可以跑上千个容器,但虚拟机可能最多几十个;
3.性能开销小,虚拟机通常需要额外的CPU和内存来完成 OS 的功能,这一部分占据了额外的资源。
为什么容器和虚拟机会有如此巨大的差距呢,这其实和他们的设计理念是相关的。设计图如下:
文章图片
举例来说,VM 的 Hypervisor 需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销。Docker 几乎就没有什么虚拟化的东西,并且直接复用了Host 主机的OS,在 Docker Engine 层面实现了调度和隔离,重量一下子就降低了好几个档次。
Docker在GIS中应用的优势 1.性能更高
性能问题是大型GIS系统中最受关注的问题。大型GIS系统通常会使用多个服务节点,在这一过程中,服务节点的创建、启动、响应三个方面也是影响性能的重要因素。
服务节点的创建与启动,通常是一个等待过程,而Docker的引入,极大地减少了这个等待过程,通过对比测试发现,Docker节点的新建和启动比FusionCompute快9倍。
文章图片
服务节点响应,针对这一点,我们对常用的三个GIS功能进行了对比测试,从测试结果可以看到,整体上Docker的性能都要优于VMWare,数据查询在Docker环境要比VMWare快32.5倍。
文章图片
2.资源利用率高,体积小
在大型GIS项目中,经常通过创建多个服务器节点来搭建应用集群,从而减轻大量用户同时访问带来的高并发压力。因为Docker体积更小,资源利用率更高,那么就可以更加充分的利用硬件资源,创建更多的Docker节点,从而有效提高GIS的并发能力。
3.价格优势
Docker是免费的应用容器引擎,相比vSphere、FushionCompute等其他商业软件动辄上万元的价格,Docker更能节省GIS项目成本。
4.环境标准化
上文中已通过LAMP案例介绍了Docker的环境标准化优势,目前Docker已广泛应用到各GIS应用中,SuperMap五个产品(iServer、iPortal、iExpress、iCloudManager及iDesktop Cross)在Docker官网提供了完整镜像。通过下载镜像,大家可以一键部署SuperMap产品,省去了软件安装、许可配置、系统依赖库查找等诸多环节,同时有效避免了因操作系统环境差异而造成的依赖库缺失等问题。
最后,为大家提供Docker镜像中心地址,大家可以体验一下更便捷的SuperMap产品安装部署方法,同时大家也可以制作自己的Docker镜像,上传到官网,分享给其他用户使用。
Docker镜像中心地址:https://hub.docker.com/
SuperMap Docker镜像下载地址:https://hub.docker.com/u/supermap
推荐阅读
- Xamarin开发人员的Nagarro面试体验| 3年经验
- 云计算中的虚拟化和类型介绍
- 应用|Git使用Merge和Rebase
- 开发|2017年,阿里巴巴开源的那些事
- Android|Android 基础控件学习--Timer
- Android|Android 基础控件学习--Menu点击跳转
- stm32|stm32之继电器驱动
- ArcGIS学习|ENVI5.3、ERDAS2015、ArcGIS10.8、CASS9.0下载地址及安装步骤
- 技术知识|为什么说BP神经网络就是人工神经网络的一种()