【.com快译】听说过《集装箱战争》吗?这是一部纪录片系列,讲述了一群探险家希望抢占一个无人认领的拍卖会的神秘集装箱的故事。这很有趣,因为他们必须付出很多努力,但他们事先并不知道他们会得到隐藏的宝藏还是一堆垃圾。 具有讽刺意味的是,同样的情况竟然发生在Linux容器(container,也就是容器的意思)领域。 Docker生态如火如荼,企业软件厂商纷纷表示不满,呼吁开放容器标准。虽然这部分是由于Docker1.12中的一些错误和功能不足,但原因不止于此。 笔者认为bug不是问题,毕竟没有哪个软件能真正做到零bug。随着时间的推移,软件质量必须在持续交付的帮助下得到提高。正因为如此,一些人认为至少从安全的角度来看,永远不要赶上最新的版本——落后几个版本并不丢人,但很安全。 公平地说,Docker1.12并没有真正颠覆主流用例。人们对1.12版本的不满主要是因为期望过高。很显然,一些期待中的功能没有及时上线,再加??上一些bug,这些对于软件项目来说都不是什么大问题。 因此,笔者认为,战争爆发的真正原因只有两个:意识形态和经济利益。 先来看意识形态。当我们提到“Doc??ker”时,实际上指的是两个对象——Docker容器镜像格式;负责实例化图像和管理关联容器生命周期的docker引擎。 表面上可以选择其他基础设施工具和框架来支持Docker镜像格式,或者连接引擎实现容器运行。 然而,Docker的创始人SolomonHykes并不满足于这种“仅基于镜像”的定位方式。他指出,除Docker引擎之外的所有工具都“只支持片面的”镜像格式。听起来镜像和引擎是密不可分的,这意味着其他容器执行框架永远无法匹敌Docker引擎的性能。这种方法显然违反了Unix模块化软件组件分离的指导原则。Docker1.12版本高度强调“功能丰富”的方向,集成了Swarm编排工具、DNS路由等功能,这些无疑引起了更多争议。 在专业人士看来,这一切更像是企业内部的客户吸引机制,而不是开源社区合理的技术正确性和利益导向。(需要强调的是,Docker软件仍然是一个开源项目,仍然有无数来自世界各地的工程师为其贡献力量。) 这就引出了下一个话题,经济利益的冲突。 在短短几年时间里,Docker已经成为每个软件厂商都想参与的热门技术品牌。然而,由于Docker品牌被Docker牢牢掌握,它只能寻求建立自己的名字和技术。 另一方面,企业软件供应商正在围绕Docker构建各种东西。如今,容器编排/调度空间已经人满为患。Google有Kubernetes,RedHat、OpenStackFoundation和CoreOS都支持它。Marathon、Nomad、Kontena等其他竞争对手也层出不穷。很明显,内置且易于使用的Swarm模式对其构成了严重威胁。 CoreOS很可能是第一个公开批评Docker架构和战略决策的群体。这是因为他们发布了rkt——一种竞争性的容器化格式。接下来,OCI发起了行业标准化和管控要求,即OpenContainerInitiative。此后不久,Docker加入了该倡议,将其容器格式和runC运行时捐赠给该项目的代码库,以努力增强其对项目方向的控制。 在我看来,这意味着无论谁需要使用标准化、稳定的骨干容器技术,都必须围绕runC进行开发。同时,Docker将继续保持创新能力和可观的经济收入。 其实,集装箱大战的传奇故事才刚刚开始。新的玩家会来扰乱市场,新的矛盾会爆发。生活在这个技术理想化的时代,也有不少Docker用户不满其稳定但乏味的特性,推出了各种fork。这种对灵活性、适应性、灵活度的追求,无疑给战争引入了更多的变数。【翻译稿件,合作网站转载请注明原译者和出处.com】
