php发展

首页 » 常识 » 问答 » 五分钟学GISDocker在GIS中的
TUhjnbcbe - 2025/3/28 18:43:00

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何Linux机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。

Docker

Docker的思想来自于集装箱,集装箱可以把货物规整地摆放起来,并且各种各样的货物被集装箱标准化了,集装箱和集装箱之间不会互相影响,任何一艘大船都可以运送这样的集装箱。使用Docker,开发者的应用可以实现一次打包,多处运行,即Docker提出的“Buildonce,Runanywhere”。

为什么用

举个简单的应用场景例子,假设用户试图基于最常见的LAMP(Linux+Apache+MySQL+PHP)组合来运维一个网站,按照传统的做法,首先,需要安装Apache、MySQL和PHP以及它们各自运行所依赖的环境;之后分别对它们进行配置(包括创建合适的用户、配置参数等);经过大量的操作后,还需要进行功能测试,看是否工作正常;如果不正常,则意味着更多的时间代价和不可控的风险。可以想象,如果再加上更多的应用,事情会变得更加难以处理。更为可怕的是,一旦需要服务器迁移(例如从阿里云迁移到腾讯云),往往需要重新部署和调试。这些琐碎而无趣的“体力活”,极大地降低了工作效率。而Docker提供了一种更为聪明的方式,通过容器来打包应用,意味着迁移只需要在新的服务器上启动需要的容器就可以了。这无疑将节约大量的宝贵时间,并降低部署过程出现问题的风险。

为什么不用虚拟机

容器和虚拟机这么类似,为什么不直接用虚拟机?简单点说,Docker容器相对于虚拟机有以下三个优点:1.启动速度快,容器通常在一秒内可以启动,而虚拟机通常要更久;2.资源利用率高,一台普通PC机可以跑上千个容器,但虚拟机可能最多几十个;3.性能开销小,虚拟机通常需要额外的CPU和内存来完成OS的功能,这一部分占据了额外的资源。

为什么容器和虚拟机会有如此巨大的差距呢,这其实和他们的设计理念是相关的。设计图如下:举例来说,VM的Hypervisor需要实现对硬件的虚拟化,并且还要搭载自己的操作系统,自然在启动速度和资源利用率以及性能上有比较大的开销。Docker几乎就没有什么虚拟化的东西,并且直接复用了Host主机的OS,在DockerEngine层面实现了调度和隔离,重量一下子就降低了好几个档次。

Docker

1.性能更高性能问题是大型GIS系统中最受

1
查看完整版本: 五分钟学GISDocker在GIS中的