转载

Windows预览版正式加入Docker

编者按:本周,微软发布了Windows Server 2016的第3个预览版,这个预览版中正式加入了Docker。这条新闻并没有引起太多的关注,笔者认为对于Windows开发者,这是很有纪念意义的一件事情。

这个项目由微软和Docker的技术团队共同合作完成, 据说这是微软 Windows 团队基础团队第一次为开源项目贡献代码。 在Docker官方博客中, Docker Engine团队的核心成员 Arnaud Porterie从contributor团队的角度,带我们了解项目背后更多的故事。

以下为原文:

作为Docker Engine团队的核心成员,我大部分时间都花在了Linux上。然而,这种情况正在变化:4月份,我们发布了Windows版本的Docker client。这个过程中,就像在Build大会和DockerCon 2015上对外所宣布的情况一样,我们和微软的开发者们展开了密切的合作。

我被问到最多的问题除了“什么时候merge我的PR?”,就是“Docker什么时候能运行在Windows上?”,第一个问题我会另写一篇博客说明,第二个问题在这周有了令人振奋的进展。

我们发布了Windows Server的Docker Engine(也叫做Windows daemon)的预览版,供大家下载和测试。Windows Server 2016 Technical Preview 3(TP3)以及WindowsServer Docker Engine的发布,也意味着将有更多的开发者加入到Docker社区中来,编译新的软件并向Docker贡献代码。

Dockerdaemon for Windows Server

许多人并没有意识到在Windows Server上运行Docker意味着什么。以下几点可以帮助你理解这个过程和技术详情:

  • Windows Server Docker Engine并不是分支,也不是另外一个项目,Linux和Windows的Docker Engine基于同一个基础代码库;

  • Windows Server Docker 的预览版,在特性上还不完备, 大多数我们熟知的 Docker 命令行都可以在 Windows Server 上正常运行 。比如,你可以写一个 Dockerfile ,然后像在 Linux 上一样运行 docker build 编译出来;

  • Windows Server Docker daemon 不能运行 Linux 下的 Docker 镜像!虚拟化技术并没有参与其中,跟 Linux 下的原理一样, Windows Server 容器重用了宿主机的内核,为进程创建了一个沙盒环境。

这意味着,对于运行的进程来说,Docker变成了一个跨平台的接口。例如,通过统一的接口,Linux和Windows Server的主机集群可以通过Docker Swarm被混合编排,还可以实用同一个Docker CLI和Docker命令行。无需学习新的命令,开发者们又有了更多的选择。

两个世界的碰撞

这项工作开始于2014年11月,回想一下,能够和微软在一个开源项目中共同合作,至今仍然觉得不可思议!从 Ahmet Alp Balkan在client上的工作开始,到John Howard,John Starks和Stefan Wernli在daemon上的工作。总之,感谢加入Docker contributor的团队!

Windows预览版正式加入Docker

微软团队总共修改了180,000行代码,所有都是公开提交,并且都是通过Docker项目的常规审核流程。

Container runtime和内核依赖

大家都知道Docker基于Linux内核特性(namespace和cgroups)。同样的,微软也在Windows内核中添加了container的特性,从而用户的代码可以被运行在沙盒环境的进程中。这些特性只在刚刚发布的Windows Server 2016预览版中可以看到。

在Docker的基础代码库中,执行容器运行的部分是execdriver,在Linux下的默认继承是libcontainer,不久后会基于runC。微软团队在这个架构中集成了一个Windows专用的execdriver,不久就会像Linux一样,加入到内核代码中。

持续集成

对于任何需要长期维护的软件来说,持续集成都是一个很重要的工作。实际上,大多数Linux的contributor并没有环境和时间,去确认自己的代码包会不会打断Windows那边的build工作。

为保证Windows Server那边的工作是一个持续的过程,首先要保证编译能顺利通过。CI保证了微软团队提交的代码,不会被其他contributor的代码影响。

现在就可以马上下载试用Windows Server Docker了,由于是预览版,还有一些限制,比如不支持docker push命令行。欢迎提交反馈建议,帮助我们下一个版本的发布。

Try Windows Server 2016 TP3(http://www.microsoft.com/en-us/evalcenter/evaluate-windows-server-technical-preview)

Community Resources(https://msdn.microsoft.com/virtualization/community/community_overview)

Discussion Forum(https://social.msdn.microsoft.com/Forums/en-US/home?forum=windowscontainers)

Windows预览版正式加入Docker 微信ID:Containerdaily

Windows预览版正式加入Docker 长按左侧二维码关注

正文到此结束
Loading...