Docker 无疑是今年以来最火的开源技术,Docker 现在已经成为目前 IT 界创业者和创新者的宠儿。无论谷歌、微软、亚马逊、IBM 等科技厂商都积极支持 Docker 技术,Docker 虽然入门和使用起来非常简单,但整个生态系统还是挺庞大的,而且其底层技术也都很复杂,目前基于 Docker 技术的项目如雨后春笋般出现,今天,笔者总结了目前正在快速演进的 Docker 相关技术,分享给大家。
Kubernetes
在今年夏天 Dockercon 上 Google 基础设施副总裁 Eric Brewer 宣布 Kubernetes,建于 Docker 之上的 Kubernetes 可以构建一个容器的调度服务,其目的是让用户透过 Kubernetes 集群来进行云端容器集群的管理,而无需用户进行复杂的设置工作。系统会自动选取合适的工作节点来执行具体的容器集群调度处理工作。其核心概念是 Container Pod(容器仓)。
Docker Pods
跟 Kubernetes 密切相关,Eric Brewer 也谈到了容器并且引入了“ pods ”的概念。这是一个在 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 图像在 Linux 和 Windows 容器之间永远不可能便携,但它的确意味着已经有一些可用的工具构建在 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 也可以看到该项目的重要性。
参考译文:5 Evolving Docker Technologies