docker无疑是今年以来最火的开源技术,docker现在已经成为目前it界创业者和创新者的宠儿。无论谷歌、微软、亚马逊、ibm等科技厂商都积极支持docker技术,docker虽然入门和使用起来非常简单,但整个生态系统还是挺庞大的,而且其底层技术也都很复杂,目前基于docker技术的项目如雨后春笋般出现,今天,笔者总结了目前正在快速演进的docker相关技术,分享给大家。
kubernetes
在今年夏天dockercon 上google基础设施副总裁eric brewer宣布kubernetes,建于docker之上的kubernetes可以构建一个容器的调度服务,其目的是让用户透过kubernetes集群来进行云端容器集群的管理,而无需用户进行复杂的设置工作。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。其核心概念是container pod(容器仓)。
docker pods
跟kubernetes密切相关,eric brewer也谈到了容器并且引入了“ ”的概念。这是一个在kubernetes里面非常关键的概念。他说:“在谷歌,我们很少部署一个容器,相反,他们是将容器组合在一起。”
他指出docker容器需要一个内部和外部端口的常量映射,这是一个需要管理、存储和查询的复杂附加层——甚至在作为单一机组部署的pod容器之间。因此,在google,他们确保每个容器的pod都有自己的ip地址。这意味着使用的端口无论是内部和外部都是一样的。这样做去掉了管理端口的复杂附加层。现在,找到pods运行一个特定的服务,你只需要这些pods的ip地址列表。谷歌计算引擎是目前唯一的云基础设施服务,帮助分配一个ip子网给虚拟机——因此在这里面每个docker pod只有一个ip。
weave
weave是由zett.io公司开发的,它能够创建一个虚拟网络来连接部署在多台主机上的docker容器。通过weave所有的容器就像被接入了同一个网络交换机,那些使用网络的应用程序不必去配置端口映射和链接等信息。外部设备能够访问weave网络上的应用程序容器所提供的服务,同时已有的内部系统也能够暴露到应用程序容器上。weave能够穿透防火墙并运行在部分连接的网络上。另外,weave的通信支持加密,所以用户可以从一个不受信任的网络连接到主机。
coreos
coreos是一种新的、架构体系重新设计的linux发行版,可以运行在既有的硬件或者云上。coreos使用systemd和fleet来对容器进行管理,通过 etcd进行服务发现和配置信息共享。coreos目前风头正劲,目前已经获得融资并宣布收购私有docker仓库服务商quay.io,进军企业 级的registry。另外,coreos的etcd等组件也获得了社区的认可,并得到了大规模使用。coreos已经发布首个稳定版本,目前主流的云服 务商都提供了对coreos的支持。
flannel
它是由coreos团队针对kubernetes设计的一个覆盖网络工具,其目的在于帮助每一个使用 kuberentes 的 coreos 主机拥有一个完整的子网。flannel之前的名字是 rudder,kubernetes 会为每一个 pod 分配一个独立的 ip 地址,这样便于同一个 pod 中的containers 彼此连接,而之前的 coreos 并不具备这种能力。为了解决这一问题,flannel 通过在集群中创建一个覆盖网络为主机设定一个子网。
docker for windows
最近,微软加入了docker的潮流,说他们打算为windows建立一个集装箱化欧洲杯足彩官网的解决方案并在之上提供一个与docker兼容的api。这的确意味着已经有一些可用的工具构建在docker api层上。
atomic
project atomic是最近才发布的一个项目,它也是一个瘦身版的linux,只包含systemd/geard /rpm-ostree以及docker组件,专门用来部署和管理docker容器。它能在接近硬件裸机级别上高性能的运行大量容器,而且它还是基于selinux的,在安全上也有保障。
cloud foundry diego
activestate的重点是开源paas项目。我们认为由diego项目引起的docker集成正促使生态系统往正确方向上前进。像kubernetes一样,diego是一个调度程序,同时,它主要与cloud foundry配合运行。我们也看到windows .net从uhuru那里集成diego,对windows来说docker已成为现实,我相信我们将看到这些技术融合。
flynn
flynn是一个使用go语言编写的开源paas平台,flynn使用模块化的设计,任何一个模块都可以独立的进行修改、升级和替换。flynn的目标是简化分布式环境中应用的部署和维护,通过使用 git push
命令,flynn就可以将应用部署到docker,从而省去了复杂的配置和操作。flynn目前仍在开发中,尚未发布稳定版,但已经获得了很多公司的资助,它被称为是下一代的开源paas平台。
fig
fig是一个基于docker的用于快速搭建开发环境的工具,目前fig团队已经加入docker公司。fig通过一个配置文件来管理多个docker容 器,非常适合组合使用多个容器进行开发的场景。fig可以和docker一起来构建基于docker的复杂应用,coreos的功能强大但是配置比较复 杂,而fig相对而言比较简单,但是很难在多台服务器上做扩展,从docker官方收购fig也可以看到该项目的重要性。
1 楼 2014-11-21 11:14