Docker 将改变所有事情
Docker是一个自动化部署应用的开源引擎,它将任何应用看作为一个可以运行在任何地方的轻量、便携及自给自足的容器。
是的。但什么是docker呢,你也许会问?让我体验一下。
目前为止,如果你需要在生产环境中运行的任何应用,你需要非常小心的配置环境并处理其中的所有依赖关系。
例如,如果你有一个rails应用,它运行在安装了ruby2.0.0、最新版本的rails和Mysq数据库的ubuntu服务器上。你需要在处理好所有依赖的基础上将生产环境配置就绪,并在此之上部署应用。
但当有另一个Rails应用需要使用相同环境时会怎样呢。你需要安装另外一个与之前生产环境相同的实例来运行第二个应用。
你可能已经感觉到了docker试图解决的问题。docker试图使使存在潜在资源共享的应用互不影响。简单来说docker试图使生产应用在共享资源上运行,就像一个桌面用户在同一系统上运行多个程序那样。
我认为docker项目将会给服务器层面带来几个巨大的影响,下面我会列出。
云平台
当前云平台提供按需求伸缩扩张和按使用模型付费的服务(但并不完全)
提供和构建时间
目前云平台的愿景要求你,必须维护一个绝对低限度的实例,来全天候地服务于所有应用。具体点来说,作为云服务的使用者,即使现在没有一个用户在使用你的应用,你也需要维护一个最低功能的实例
云程序之所以要做成这样,是因为一些云应用的属性,像程序的提供和构建时间这样的,其重新启动的时间至少需要几分钟。所以,为了以防万一,你必须很好地维护一个实例。
这儿也正是Docker优势所在, docker几乎不存在应用的提供和构建时间,即使是开始一个docker容器,有时还不到一秒种。docker的这个特性几乎可以让使用者完全不需要一个占用着专门处理器,内存和磁盘空间还得全天候运行的实例了。
实例抽象
云服务提供商通过提供一个独立的虚拟机实例来获利。使用者根据使用这些实例的时间来付费。这些实例都是彼此隔离的,而且资源都是自己的,因此通过虚拟机实例来收费也是合理的。
在使用容器的情况下, 操作系统被许多容器共享。此外,既然这些容器没不会一直需要一个专用的处理器和的内存。通过抽象实例付费的方法可以抛弃了,通过你使用的模型来付费的方法出现了。
专业化服务的提供商,比如数据库托管和图形加工处理提供商,可以大大受益于这样的解耦实例。不是通过分配资源这样的选择服务多少收费,而是通过实际服务使用量这样可插拔式的服务来收费。最后说一下,抽象底层机器将有利于衡量服务使用量
按小时支付模式
大多数的云主机提供商要求用户按小时支付(即使你只用了15分钟然后就把你的实例杀掉了),但这已经比原来需要购买专用硬件已经好很多了。但是,这仍然不是你只支付你所用的部分。通过像docker一样的共享资源环境的模式,客户只需要支付他们所用的CPU周期和内存就可以了。
开发的便利
到目前为止,开发者们被要求维护不同的开发环境和产品环境。这种不一致性不可避免的带来了问题。Docker承诺将会通过使开发和部署在相同的容器中来消除这些情况,这也将使得开发更加容易并且少一些痛苦。