又是一年OSCON大会,今年云基础设施成了所有技术人士最为关心的热门词汇。而其中最炙手可热的新兴项目正是Docker,这款超轻量化集装箱式应用可谓充满发展潜力。
我正好遇上了Docker服务副总裁James Turnbull,他在本次大会上组织了一个Docker速成班。除了讨论Docker到底是什么之外,我们还交流了关于云、开源贡献以及借此获得工作岗位方面的话题。
你曾经撰写过几本讨论Linux学科的书籍。你是以怎样的机缘与Linux相遇的?你为什么会在这方面迸发出如此热烈的激情?
我记得我第一次接触Linux是在上世纪九十年代中期,当时Debian系统才刚刚推出不久。我之前曾经使用过OS400、VAX/VMS以及SunOS,但这些经历仅仅局限在企业环境当中。平心而论,"开源"这个概念并没有强大立刻将我牢牢吸引住。在此之后我遇上了Linux,这相当于我一夜之间拥有了自己的台式规格计算机,其中运行着在背后支持互联网的设备完全相同的工具与服务。这简直让我兴奋得想要尖叫。同样重要的是这套系统完全免费,也就是说我不需要为硬件及操作系统软件支持高昂的使用成本、却也同样能够利用它们实现梦幻般的构想。接下来,我发现免费只是其特性的一部分、真正重要的是我能够获得它的源代码。换言之,如果出现组件损坏或者想要更多功能,我们自己是有办法实现的(或者至少可以尝试加以解决)、或者与其他技术大牛交流以学习如何实现。这种前所未有的参与感加上开源技术社区的逐步成长壮大真的令我惊讶万分。从那时候开始,我就一发不可收拾地爱上了开源。
你的个人简介中提到你的"真正工作岗位"是Docker服务副总裁。莫非你在其它开源工作中的努力完全属于个人爱好?
这其实是我的合作伙伴开的一个小玩笑。跟大多数"极客"一样,我总爱坐在自己的计算机前面,忙于通过敲打解决问题或者编写新项目。我的合作伙伴笑言我拥有两份工作:"真正"工作和开源工作。多亏了过去两年中在Puppet实验室以及Docker项目当中的经历,我终于能够将自己的激情转化为实实在在的经济收入了。
开源贡献者们大多喜欢这样表达自己的工作性质;在开源领域,个人爱好与专业工作之间的界线确实非常模糊。你觉得这是一种积极的影响、还是带有消极性?
我认为从不同的角度出发,这样的思维方式既有积极性也有消极性。积极的一面是,我们在自己的工作中用于解决问题的方案(例如构建工具、修复漏洞或者编写说明文档等)可以被共享给其他用户,从而帮助对方轻松解决同类问题或者更快找到正确答案。但从消极的角度看,把热情与工作结合得太过紧密往往会让人感到有种任务"无处不在"之感。
我还意识到,这种爱好与工作之间的模糊界线给整个行业的多样性乃至开源社区带来了怎样的影响。新兴企业领域有这样一种看法,认为只有在GitHub上拥有一定成绩并为开源项目作出贡献的开发者才是优秀的开发者。我个人非常幸运,因为我有时间、金钱和必要的教育背景来支撑自己为开源作贡献的决定。但很多其他参与者没有这样的资源储备,而且参考的都是些涵盖范围很广但针对面却过窄的开源社区调查结论,例如:白人、男性、受过高等教育。这种对"优秀"开发者的定义已经成为一种封闭的招聘体系,而且长期以来在开源乃至整个IT业界一直普遍存在。我认为这是我们迫切需要改变的状况。
你是怎样接触并参与到Docker项目当中的?
我在Solomon将Docker项目开源化不久之后就参与到了其中。我对于LXC与容器技术拥有一定了解(过去曾经做过与Solaris Zones以及IBM硬件上LPAR相关的工作),因此我决定在这里一试身手。它的易用性确实给我留下了不可磨灭的深刻印象。在与容器方案真正打交道之前,我一直将其视为非常复杂的技术体系,需要大量调整与前续培训才能顺利上手。然而Docker却实现了开箱即用这一伟大目标。就在见识到Docker以及由其构建的以CI/CD为核心的工作流程之后,我瞬间成为它的忠实拥护者。
Docker已经在虚拟化与云计算领域掀起了一股新的疯狂热潮。人们为什么会为其如痴如狂?
我认为其核心吸引力在于Docker能够将自身的轻量级特性与工作流程相结合。它速度极快、易于使用而且属于一套以开发者为核心的DevOps类工具。它的任务非常基础:让代码易于打包并发布。开发者们一直希望拥有可以通过抽象方式简化此类细节处理流程的工具方案。他们的诉求很简单------让自己的代码正常运作。听起来简单,但实际执行中却复杂无比。开发者们往往面临着与系统管理员之间的各种冲突------代码在开发者的环境中明明能够正常起效,但在发布后却问题连连。Docker这位救世主以最大可能让我们的代码变得便捷且绿色,从而保证其能够轻松为用户在各类环境下正常使用。
在你看来,Docker项目最激动人心的潜在用途是什么?
绝对是建立执行流程。我的意思是,我曾亲眼见过很多技术人员利用容器机制建立起规模庞大的运作体系,事实上大家可以在一台主机上容纳众多容器、它们的运行速度都很快。但这还并不足以让我为之疯狂------真正的亮点在于,人们可以利用它自动构建起属于自己的开发、测试与创建流程。
Docker与其它标准化虚拟方案有什么不同?
Docker属于操作系统层虚拟化方案,这一点与管理程序类虚拟化技术不同。后者将虚拟机通过中间层(也就是'虚拟机管理程序')运行在物理硬件之上,而容器则将用户空间运行在操作系统的内核之上。这样的设计使其极端轻量化而且拥有出色的速度表现。
你觉得云技术的发展是否已经受到开源发展趋势的深层影响?
我认为开源软件与云计算之间紧密相关。二者在形式上都是让软件运行在云环境当中,而其开发模式也都能够与云相对接。开源软件成本低廉,而且通常不会与效率以及许可产生什么激烈的冲突。
你觉得Docker会给虚拟化以及云环境带来怎样的改变?你是否认为云技术已经拥有自己的一条坚实发展轨迹,抑或是仍然存在较为宽松的自由变化空间?
我认为Docker拥有大量适合处理的工作负载,正如我之前曾经提到的众多容器在超大规模领域的应用以及开发、测试、创建类用例。我完全相信将有相当多的企业用户与供应商乐于将Docker当成虚拟化实现层面的备选方案,包括裸机与云环境这两大模式。
至于云技术的发展轨迹,我认为我们在过去几年中已经亲身体验到了其前进方向的显著变化。我觉得在真正迎来结局之前,这样的变化还将继续存在。其中最大的变数源自OpenStack及其能否成为晋升为IaaS备选方案或者DIY云解决方案。在我看来,我们目前仅仅触及到PaaS的潜在可能性,这一领域还拥有大量成长与发展的空间。大家不妨继续关注PaaS产品在功能与容量上将如何发展,又能否变得与消费级云产品相融合或者说对接------这也是未来几年中值得认真考量的重要因素。
你能为我们简单介绍一下,在今年的OSCON大会上Docker会带给我们哪些新鲜内容吗?
我们将组织一轮Docker速成培训班,目的在于帮助开发人员与系统管理员以易于上手的方式迈出踏向Docker道路的第一步。我们的教程涉及如何使用Docker以及如何将其与用户的日常工作流程相结合。