我们为什么使用Docker
求生专家贝尔·格里尔斯需要盖一个房子,于是他搬石头、砍木头、画图纸、盖房子。一顿操作,终于把这个房子盖好了。
结果,住了一段时间,心血来潮想搬到海边捕捉海牛请亲友吃烧烤。这时候按以往的办法,他只能去海边,再次搬石头、砍木头、画图纸、盖房子。
烦恼之际,《荒野求生》栏目带来一种叫做镜像的东西,可以把他盖好的房子复制一份,搬家时只需要把镜像放在背包里。
等他到了海边,就用这个「镜像」,复制一套房子,拎包入住。
对应到项目中来,房子就是项目本身,镜像就是项目的复制,背包就是镜像仓库。
如果要动态扩容,从仓库中取出项目镜像,复制就可以了。Build once,Run anywhere!
在工作中,一款产品从开发设计到上线运行,开发人员负责代码编写、开发产品,测试、运维工程师需要测试环境,产品部署。这之间就会有分歧。
例如开发的一个电商项目,其中包括 Java 环境/Tomcat/ MySQL / JDBC 驱动包/相应 jar 包,还有SSM框架及搜索引擎Solr等技术,仅仅是在windows系统上协调这些项目的版本,保证环境不冲突及项目正常运行,就需要大量时间来调试,而我们技术人员往往在windows系统上开发及调试,那么上线的时候需要部署到linux系统中,这就会导致由于环境不同的产品部署问题。
往往就算不跨系统,而是换一台同样操作系统的服务器,要移植部署依然很麻烦,那么为了解决这个问题,Docker就体现出了他的用处!
Docker是什么?
Docker 是一个开源的应用容器引擎
Docker 其中包括,镜像、容器、仓库,很简单,目的就是通过对应用组件的封装、分发、部署、运行等生命周期的管理,使用户的产品(可以是 web 应用或者数据库应用)及其环境能够做到“一次封装,到处运行”。
再通俗点说,我们使用Docker,只需要配置一次Docker容器上面的应用,就可以跨平台,跨服务器,实现应用程序跨平台间的无缝衔接。
Docker实际上就相当于一个封闭的沙盒或者是集装箱,它可以把不同的应用全都放在它的集装箱里面,并且以后有需要的时候,可以直接把集装箱搬到其他平台或者服务器上,实现容器虚拟化技术,随用随搬。
一句话,Docker解决了运行环境和配置问题软件容器,方便做持续集成并有助于整体发布的容器虚拟化技术。
补充: 沙盒原理
电脑就像一张纸,程序的运行与改动,就像将字写在纸上。而Sandboxie就相当于在纸上放了块玻璃,程序的运行与改动就像写在了那块玻璃上,除去玻璃,纸上还是一点改变都没有的。它创造了一个类似沙盒的独立作业环境,在其内部运行的程序并不能对硬盘产生永久性的影响。其为一个独立的虚拟环境,可以用来测试不受信任的应用程序或上网行为。
认知高频的人,他的思维逻辑是利益、合作、圈层、友好。低频认知的人,其思维逻辑是撕逼、揭短、反目、单干。