事实并非如此:Windows拥有自己的容器技术,其立足于Docker但能够在微软环境下运行。当然,我理解为何会出现这种误解:Windows 10刚刚新增Linux子系统功能,而Windows Server 2016在同一时间添加了Docker工具。这在一定程度上让人们将Linux与Docker联系了起来。
微软对容器技术的重视已经成为近年来最重要的跨领域发展举措之一。毫无疑问,容器技术已经迅速成为DevOps与持续集成实现工作中的关键性组成部分。微软当然也开始采取行动,而其工具也反映出微软如何使用软件并构建应用。
关于容器
通过将应用所使用的服务与操作系统需要的服务加以拆分,现代容器技术已经成为服务器端应用打包与部署的有力工具。其便携性能够在本地数据中心、私有、混合乃至公有云中得到充分体现。打包在容器内的应用与主机操作系统无关,其可在任意类似的容器主机上运行,而不必作出任何变更。
将应用打包在容器内意味着该应用能够轻松获得运行所必需的全部配置文件及依赖选项。大家可以在不影响底层操作系统的前提下更新容器版本,并在不变更代码的情况下实现容器迁移。这种对基础设施与应用部署工作进行分别管理的方式,正是DevOps模式的逻辑目标所在。
原本作为大型机技术的容器方案(或者至少类似于命名空间与进程隔离的表现形式)如今已经能够在各类Unix系统中找到,包括Linux与Solaris。
Windows容器探秘
现在,随着Windows Server 2016的发布,Windows也有了自己的容器技术。其基于开源Docker容器,但同时增加了对PowerShell的支持并能够对Nano Server与Hyper-V容器进行额外隔离。
Docker仍是微软容器战略的核心所在。大家不仅能够利用Swarm、Machine乃至Data Center等产品管理Windows与Linux容器,甚至能够在Windows 10上通过Bash shell将Docker客户端安装在Linux子系统中并加以使用。不过这种方式要求大家提供证书,因此用户普遍更倾向直接选择Docker的Windows版本应用。
与多数Windows Server功能一样,Windows容器可通过Windows对话框或者PowerShell进行安装。采用PowerShell更为高效,因为OneGet PowerShell模块能够同时安装Windows容器与Docker,且只需一次重启即可起效。(如果大家希望使用Hyper-V容器,则还需要启用Hyper-V虚拟化选项。)
Windows容器得到了开发与运营团队的热情支持,自Windows Server 2016通用版本发布以来,Docker Hub容器库的基础Windows镜像下载量已经突破100万次。
在Windows上构建并部署容器
容器不只是一款服务器工具,Windows 10的专业版与企业版皆支持该项技术。另外由于Windows 10只支持Hyper-V容器,所以大家还需要安装Hyper-V。
在Windows容器功能启用后,大家还需要下载并安装Docker Engine与Docker客户端,而后安装您为应用配置的基础镜像。
微软建议大家利用Nano Server作为Windows容器基础构建镜像,其体积小巧且速度极快,没有UI,因此部署更快且相对更安全。
另外,虽然大家可以利用Nano Server托管Node.js等运行时,但其本身其实主要用于托管.Net Core应用。大家无法获得全部.Net功能。不过如此一来,大家可以单纯将Nano Server托管的Windows容器视为新应用工具,而非对原有代码的托管方案。
正因为上述差异,很多企业更倾向于利用Windows Server Core作为基础镜像。虽然其体积更大且部署时间更长,但Windows Server Core支持当前Windows SDK及全部.Net实现方式。大家可以选择在现有服务器与容器之间轻松切换,从而让应用随时部署在您需要的平台之上。当应用被部署在容器中后,开发者能够进行进一步拆分,例如将API连接器移动至其自有Nano Server容器以简化应用维护工作。
Windows容器现在已经可作为Visual Studio 2017的部署目标。大家可以将应用构建并交付为容器形式以供测试。对于容器技术的推广而言,如此简单的一键式实现方式也确实非常重要。
由于微软Azure将很快支持嵌套虚拟化,因此我们将能够借容器之力在公有云内添加更多隔离能力,从而帮助监管机构进一步了解将应用迁移至容器以及云环境的可行性及重要意义。