微软 Azure 云的 Docker 之路:兼容、原生与未来

阅读数:2105 2014 年 11 月 28 日

话题:微软Windows AzureAzure语言 & 开发架构

全球范围内技术领先的微软 Azure 云,无论从技术储备上还是从开发社区上,一直以来都受到业界的广泛称赞。与传统的云计算服务商不同,Azure 这个后起之秀凭借 Windows Server 和混合云等技术,正逐步获得更多的市场占有率。从新的存储架构到基于 Visual Studio 的开发框架,甚至新的硬件架构设计,Azure 云仍然一直在不断自我革新和进步。

现今,商业模式与商业气候对人们的创新要求日益增加,如何简单快速部署可移植的分布式的应用是近几年云计算领域努力解决的问题,Docker 在这样的大背景下应运而生,并迅速获得社区认可,它能够在几分钟甚至更短的时间之内就将代码开发转换成产品,实现实时转换。Docker 是一个开源的应用容器引擎,它能帮助开发者打包应用以及应用的依赖包,并构建为一个可移植的容器,从而发布到任何流行的 Linux 或者 Windows 机器上,或者虚拟机。Container 完全使用沙箱机制,容器相互之间不会有任何接口,就如同 iPhone 的应用之间没有公共部分。这样的优势非常明显,应用的移植几乎没有性能开销,可以很轻松地在机器和数据中心中运行。最重要的是,这些容器不依赖于任何语言、框架或包括系统。

在业界对容器技术强烈的需求导向下,各大云计算厂商都纷纷开始考虑采用 Docker 作为其虚拟化技术的一部分。同样的,Azure 也走上了一条先兼容再原生最后为己所用的 Docker 技术之路。

一、兼容

鉴于 Docker 在云计算虚拟化领域的迅速火热,Azure 云首先采取了在自己的 Linux 虚拟机上兼容 Docker 的方式来吸引 Docker 社区的开发这。2014 年 6 月 9 日,Docker 开发者大会上,Azure 云合作伙伴项目经理 Corey Sanders 展示了直接利用Azure 跨平台工具集(由微软开放技术组开发)在其 Linux 虚拟机上运行 Docker。这种兼容的方式,仅通过一条简单的“azure vm docker create”命令即可调用 Docker 进行容器的创建。更多细节步骤可以参考微软开放技术组给出的用户说明。在而后的 7 月,Azure 则进一步宣布与 Google 和 Docker 合作来支持Kuberneteslibswarm开源项目在其云平台上的运行。Kubernetes 是 Google 公司多年以来进行大规模容器管理的经验汇总而来的开源工具,发布以来收到业界广泛的好评,目前处于容器管理方面的领头位置,此前 InfoQ 也对其基本概念、构件等相关内容进行了介绍。Libswarm 则是 Docker 官方团队开源的一款容器管理工具。Azure 云在这些工具的帮助下,更加灵活的支持着开发者的需求,使他们能够快速的构建、部署和管理跨系统、跨语言甚至公有私有混合的容器集群。在这里,无论是.NET、Python、Ruby、Node.js 还是 Hadoop 和 Oracle,都能够和 Azure 云平台无缝结合并运行,极大的简化了 Windows Server 系开发者的开发工作。更多的工具正逐渐加入 Azure 云管理工具集,如 Puppet、Chef 等。

在 Windows Server 下一个开发版本中,Docker 引擎将会成为一个重要组成部分。同时,支持 Windows Server 的 Docker 引擎镜像将会在 Docker Hub 平台上发布,超过 45000 个 Docker 应用已经发布在了这个社区上。这将会大大帮助开发者在 Windows Server 和 Linux 平台上灵活地进行选择。

二、原生

兼容模式虽然是最快使用 Docker 的方式,但是开发者仍然需要准备 Linux 虚拟机作为 Docker 管理主机,这在一定程度上干扰了开发者的便捷开发。为此,2014 年 11 月 18 日,Azure 云高级经理 Khalid Mouss 在官网发布了可以直接在 Windows 服务器环境下运行的原生 Docker 客户端,用来管理运行在 Linux 虚拟机上的 Docker 镜像。而在此之前,开发者只能使用 Linux 下的 Docker 命令或 boot2docker 工具来进行管理。这一举措极大简化了开发者使用 Docker 容器技术的曲折程度,得到了社区的热烈反馈。更多编译和使用原生客户端可以参考官网给出的教程。当然,目前原生软件还存在很多问题。让原本运行于 Unix 系统下的 Docker 在 Windows 系统上跑起来绝对不是一件轻而易举的事情。而目前软件的功能还仅限于将 Docker 客户端的代码编译通过,还不能在 Windows 环境下运行 Docker 监控程序或 Docker 容器。

除了积极采用 Docker 容器技术以外,Azure 云团队也利用微软研究院强大的实力做了一些容器技术的自主研发:Drawbridge。主要针对现在 Docker 容器的安全性。相比之下,Docker 功能比安全更引人瞩目,但这并不意味着安全是可以忽略的。坦率来讲,现在的容器并不安全。虚拟机与宿主之间共享数据过多又不能有效隔离,影响了容器安全性,至少在云计算容器用户间还达不到安全性要求。Drawbridge 由两部分构成,分别是一个安全隔离容器 picoprocess 和一个运行于安全容器之内的系统 Library OS。整个技术基于 Windows Server。

三、未来

2014 年 10 月 15 日,Azure 云和 Docker 共同举办了Docker 全球开发者大会。在 Azure 云副总裁 Jason Zander宣布了微软与 Docker 的合作伙伴关系以后,强强联合的两只技术团队对未来做出了如下设想:

  • 在下一个版本的 Windows Server 中自带 Docker 容器引擎;
  • 在 Azure 管理门户和镜像库中融合 Docker Hub;
  • Azure 持续发布对 Docker 开放 API 的贡献,保证跨平台移植得以实现;

微软与 Docker 的合作是强强联合,在各自的领域中两个公司都是行业翘楚。Windows Server 是企业级的应用系统,Docker 的容器技术已经日趋炉火纯青。不难预见,Azure 云的 Docker 之路将会给应用创新的商业市场中带来巨大变革,带动整个产业竞争力的提高。


感谢郭蕾对本文的策划和审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。