• 1
  • 2
  • 3
  • 4
  • 5
阿里云应用开发 首 页  »  帮助中心  »  云服务器  »  阿里云应用开发
发展中的 Docker 技术
发布日期:2016-8-3 16:8:0

  大约18个月前Docker发布后,这个领域的新技术已呈井喷之态。虽然下面的列表很长,阿里云在此还是要简述下5项Docker相关、且不断发展的技术,这些技术正在推进云技术的发展方向。

  1) Docker Pods

  除Kubernetes,Eric Brewer还谈了容器并引入了"pods"这一概念。pods是Kubernetes的一个核心概念。他说,”在Google我们很少只部署单个容器“。相反,他们把容器组合在一起。比如,一个应用进程通常还包含多个辅助进程,比如logging,还有应用本身不关心的其他任务。

  同时他指出Docker容器还需要解决内部及外部端口的映射,即Docker容器内部进程可见的和外部可见的映射。这就多出了一层需要被管理、存储和查询的复杂度(complexity),即使被部署为一个单元的pod内部的容器间也存在。所以,Google给每个pod内的一族容器共享一个IP地址。意味着容器的内外端口都是相同的。端口可在设计或者构建时引入。这就免了管理端口这层复杂度。现在要查找运行某些特定服务(service)的pod,只需这些pod的IP地址列表就好了。

  目前Google计算引擎(Google Compute Engine)是唯一一个把一个IP子网分配给一个虚拟机的云基础设计服务提供者,所以它的每个Docker pod都有自己的IP。

  2) Kubernetes

  今夏在 Dockercon 上,Google的基础设施VP Eric Brewer,在谷歌发布了 Kubernetes。Kubernets提供了一种方式来组织机器集群上的Docker容器集。 它本质上是个调度器,在即使有机器崩溃,也能够保证容器的持续运行。 我们看到了Kubernets正被迅速采用,并吸引很多人的兴趣,这些都超越Kubernets仅是Google的Docker相关云技术这个传闻。我们需要对运营层次(Operations level)上做组织,而Kubernets恰好处理得很好。Kubernets可创建描述Docker镜像集的配置清单(manifest),并且把配置清单放到集群中。这样配置清单可自动部署、水平伸缩这些容器。同时Kubernets提供了一种定义”service“的方式,service可被运行在集群上的其他应用使用。

  3) Docker For Windows

  Microsoft最近也加入了Docker行列,宣称他们打算为Windows创建一个容器化的解决方案,并且提供一组兼容Docker的API。 虽然Linux与Windows容器的Docker镜像不太可能可移植,但是意味着在Docker API层之上构建的工具可在这些操作系统间重用。

  大企业在Windows上进行了大笔投资,因此这个声明对想采用Docker的企业IT部门是个重大胜利。

  4) Flannel

  CoreOS,除积极参与了Kubernetes,还给出了Flannel (之前叫做Rudder)来尝试解决这个端口映射问题。 Flannel在真实的网络上层叠了一层网络,这层网络会把一个IP子网分配给一台机器。这样做会有很大的性能开销,但他们希望随着Flannel的发展,这些开销能被改善掉。

  5) Cloud Foundry Diego

  Cloud Foundry开源PaaS项目是ActiveState的主要焦点。VMware发布Cloud Foundry之后,我们是第一个采用者。 当我们的解决方案Stackato在底层采用了Docker之后,我们认为源于Diego项目的Docker集成正把此生态系统下的其余部分带上正轨。

  Diego 像Kubernetes一样,也是个调度器;但与Kubernetes不同的是,它的运行环境是不确定的,而且它主要与Cloud Foundry一起工作。Docker只是Diego的一个集成,但是却是IBM从事Diego的开发者的唯一关注点。我们也看到Diego的Windows .NET集成,如来自Uhuru的版本,当Windows的Docker成为现实之后,我确信这些技术将会融合。 Docker 的PaaS集成对Docker的未来相当重要。我们看到开发者成为Docker出现的主要推动力。开发者描述应用的运行环境的能力愈加强大。此外,每个人都可以选择一个Docker化的应用,并且马上运行起来,认识到这个事实,已填补了解决方案不存在的空白。 PaaS这个扩展更关注开发者,虽然其他技术正把Docker从开发者转给运营团队(Operations team)。

  结论

  这篇文章只触及Docker生态下大量技术的冰山一角。现在Github上有18265个项目引用了"Docker"这个词。几乎每周都有新方案发布,而现存的技术方案每次迭代都是在或者屈服或适应新形势。Docker生态本身也是在快速发展。