对话 Docker Maintainer,「与社区共同成长」成关键词

全球性的 DockerCon,在大洋彼岸的海滨城市西雅图召开。虽然如今已经落下帷幕,然而盛会的很多理念以及对于未来的思考,对全球潮流的影响不会有丝毫的消褪。

远隔重洋,中国拥有庞大的市场以及技术社区,不论从商业化的角度,还是处于社区运营的考量,国内都希望和 Docker 官方拥有更多的合作,借助双方的优势,帮助 Docker 技术在国内完成很好的落地,发挥其自身的价值。

DaoCloud 作为国内基于 Docker 技术领先的创业公司,一直将国内的 Docker 技术布道作为己任。此次专门安排技术人员前往 DockerCon,带来 DockerCon 精彩报道的同时,也希望从技术社区的角度,拉近大洋两岸的距离。此次,DaoCloud 的技术布道师孙宏亮,有机会采访到了 Docker 官方的 Maintainer 陈东洛先生,让大家一起聆听来自 Docker 官方的声音。

作者介绍:

WeChat_1467170249

孙宏亮,毕业于浙江大学,现为 DaoCloud 技术合伙人,在 DaoCloud 主要负责企业级容器云平台的研发工作。数年来一直从事云计算领域,是国内第一批研究和实践 Docker 的工程师,在国内起到重要的 Docker 技术布道作用。目前,拥有个人著作《Docker 源码分析》,同时是 Docker Swarm 项目的全球 Maintainer,并对 Docker 等其他项目有着大量的代码贡献。

以下是采访实录:

孙宏亮:请介绍一下您自己,分享一下您和 Docker 的渊源。

陈东洛:我是 Docker 开源部门的软件工程师,是 swarmkit,swarm,docker engine-api 项目的管理员。加入 Docker 前为微软高级开发经理,负责开发微软全球数据中心管理系统,实现硬件软件自动化部署,开发网络管理,域名解释,时间同步,负载均衡等系统。此前任职法国电信和俄亥俄州立大学,研究IPv6和下一代通讯网络。主要兴趣在分布式系统,数据中心和网络协议。

chendongluo

Docker Maintainer 陈东洛先生

孙宏亮:您作为 Swarm 与 Swarmkit 的项目负责人,如何看待这三年 Docker 的发展?

陈东洛:纵观容器生态的发展,回顾 Docker 这三年,我认为用「与社区共同成长」来形容 Docker 的发展最为合适。Docker 一面世就得到开源社区的追捧,社区在使用中提出很多具体的需求,Docker 公司和社区通力合作解决这些问题又促进更大范围的使用。当前 Docker 容器广泛地应用于公有云和私有云部署,2016 年 6 月 Docker 镜像下载已经超过 40 亿次。

说说我自己对于容器的理解:IT 和各个产业的结合加速云计算发展,现有 OS 环境下,进程级调度冲突太多,VM 级别的调度,开销大而且延迟很难令人满意。粗放式资源调度既不能有效利用资源,还需要大量人力运维成本。容器的灵活性为这个问题开辟了一个新方向。

回溯历史,三年多前,工业界的应用形态与管理方式对现有工具链提出了很具挑战性的要求,在 Docker 之前不少公司也使用一些容器特性来进行部署,但是没有形成有效的工具链。DotCloud 这家公司在开展云计算的服务探索中发现了容器的潜力,成功地实现公司转型,开发出 Docker 容器来解决开发和运维的痛点。Docker 开发一系列工具把容器管理简单化,大大降低容器使用的门槛,获得工业界的大量采用。顺应开源社区的要求,Docker 主导建立了开放容器标准 OCI(Open Container Initiative),容器标准化推动上下游产业的独立发展。Docker 逐步完善企业级的多方面需求,比如容器的存储管理,容器的网络规划;致力于提高工具的安全性和易用性,包括推出 Swarmkit 简化容器编排,都是按照用户的需求在探索一条切实可行的道路。

孙宏亮:Swarmkit 的成功孵化对于 Docker 而言意味着什么?

陈东洛:Docker 的发展一直以社区为主,立足解决社区重点问题,同时也有明确的发展方向,对于哪些内容不会去做,哪些内容是当前阶段急需解决的问题,内部结合社区都很明确地分析过。

Docker 在前三年解决了网络、存储、安全等诸多问题后,越来越多的用户接受 Docker 并开始大规模部署,此时容器的编排(orchestration)就非常重要。类似于 Docker 将容器使用化繁为简的思路,Swarmkit 是要把编排变得容易。我们从微服务架构出发,提供服务定义,overlay 网络,内置认证,负载均衡等等功能,以一种较为简单的方式来实现 Swarmkit,既提供了丰富的特性来实现容器部署,又保持系统的简单和鲁棒。

如今应用的部署数量几乎呈现指数级增长的情况下,对于自动化的要求变得非常高。Docker 致力于为社区提供端对端(End-to-End)的工具链,使得工程师能够异常便捷地完成 DevOps 角色。Swarmkit 的创建非常简单,使用方法跟现有 Docker 命令非常相似,学习难度低。开发者不仅能在 Desktop 上完成程序开发,构建镜像,还可以在 Desktop 上通过 Swarmkit 测试服务,大大降低测试成本;运维人员则可以使用 Swarmkit 把服务大规模部署到云端。开发和部署的一致性降低了 DevOps 沟通成本和开销,是企业用户所乐于看到的。

孙宏亮:Swarmkit 与 Swarm 两者属于怎样的关系?

陈东洛:Swarm 是一个 Docker 原生的集群系统,主要目标是把多个服务器整合成一个大的 Docker 节点,它的主要特色在于完全支持 Docker 的命令行。Swarmkit 引入更多微服务的概念,内置服务定义,服务发现,负载均衡,关注分布式系统在 Docker 环境中的编排。Swarmkit 的发展,也是在 Swarm 的思想上孵化而出,以一种更为简捷的方式支持 Docker Engine。两者目前并存,给用户多提供了一种选择,有各自的应用场景。

孙宏亮:Swarmkit 同样立足编排,是否与 Kubernetes 存在竞争,各有哪些优劣?

陈东洛:我自己以探索的角度来看待这些开源项目,目前业界的编排项目有各自的侧重点。Docker 一直把社区放在第一位的,我们希望推动生态来发展业界急需解决的问题。社区对编排有着很大的需求,同时也面临很大的困难,我们觉得需要一种安全简易的方式来实现容器网络、安全和资源调度。

然而,就像之前我提到的那样,Docker 集成的 Swarmkit 编排也是有方向性的。Docker 编排的实体集中于服务(service)与任务(task),而这些概念还是在夯实容器层的概念。举一个例子,Docker 本身没有集成监控(monitoring),监控是一个具体的点,容器层、应用层甚至物理层均有需求,根据场景不同,实现方式与性能指标都有很大的差异。这个问题,业界有很多细分领域的监控公司做的都非常出色,并不是 Docker 的重点。再举一个例子,网络发展了这么多年,传输层和网络层稳定在 TCP/IP 协议,而应用层按需发展出非常多的协议,并不能完全做到统一。也正是这样的一个现状,Docker 当前的首要任务是:夯实容器层的编排基础。

谈及与 Kubernetes 的对比,两者出发点有所差异,不好直接比较。我可以谈谈 Swarmkit 的设计理念:首先,Swarmkit 认为可以一种方便的方式在 Docker 上集成编排功能,这对于部署实施带来的体验绝对是有致命的吸引力,让编排能力迅速落地。另外 Swarmkit 的实现尽量减少外部依赖,无需额外的 etcd 等工具,通用性很强,直接集成 raft 的公用接口,将系统响应时间做到比较低。

孙宏亮:Docker Engine 的发展极快,个人感觉没有达到稳定状态,您怎么看?

陈东洛:Docker 的发展的确非常快,从 Maintainer 的角度出发,你和我一样,肯定是觉得代码变更非常频繁。变化是事实,但是有两点 Docker 公司与整个社区都是始终恪守的:

  • 变化在于功能扩展,提供的 API 接口不会变化,向后兼容的程度做的还是非常棒的
  • 变化飞速也是难免,用户需求在增长,社区必须将这些需求放在首位

另外,Docker 的发展太快,也是存在一些客观原因。这些客观原因往往比较细化,比如 Docker 需要支持的系统非常多,从绝大多数的 Linux 发行版,到现在的 Windows,Mac 版本;除了 OS 领域,IoT 领域的一些场景 Docker 也在努力解决。

总体来讲,Docker 一直在通过各种方式帮助用户规避不稳定因素,未来肯定会稳定下来,并提供类似于 LTS(Long Term Support)的版本。容器在 OCI 框架下的标准化也逐步提高 Docker 接口的稳定性。

孙宏亮:是否可以透露未来 Swarmkit 的发展方向与工作重点?

陈东洛:当然可以,说到方向,成熟是所有软件都希望达到的状态,Swarmkit 也不例外。具体的工作方向,有以下几块:

  • Swarmkit 还是会一如即往的追求:易用性和简捷性
  • 从生产环境的使用角度而言,内置的安全性,不会有丝毫懈怠
  • Service 的 API 完善
  • 网络的自动化等

以上是此次采访的全部内容。作为 Maintainer 的陈东洛先生一直希望和国内 Docker 技术社区有很好的互动与交流。另外值得一提的是,陈东洛先生也将参加 InfoQ 举办的 CNUTCon 2016,以下是其分享内容:

陈东洛:《使用 Docker SwarmKit 进行集群管理和服务编排》
内容简介:Docker 容器的出现改变了云计算开发模式,如何有效地大规模部署容器成为业界热点。Docker 6 月份发布 SwarmKit,在 Swarm 的基础上提供 Docker 原生集群来管理计算资源和编排容器。Swarmkit 主要特性包括服务定义,负载均衡,故障恢复,滚动更新等。Swarmkit 用相对简洁的方式实现集群功能,帮助用户灵活的进行 Docker 容器管理。我们会演示如何使用 Swarmkit 定义计算,网络和存储,实现服务部署及升级,并探讨下一步发展方向。

Leave a Reply

Your email address will not be published. Required fields are marked *