作为 Docker Engine 团队的核心工程师,我在 Linux 上自然花了大部分时间。这种情况最近已经改变:今年 4 月,我们发布了一个 Docker 客户端的 Windows 版本。通过这个过程,我们已经与微软开发人员密切合作。
我被问到的最多的一个问题就是:“ Docker 什么时候将在 Windows 上运行?”,对于这个问题现在有了令人兴奋的回答。
因为本周有了标志性的巨大飞跃,我们为 Windows Server 发布了 Docker Engine 技术预览版, Windows daemon 现在已经可以下载和测试了。 Windows Server 2016 Technical Preview 3 (TP3 ) 和 Windows Server 上的 Docker Engine 一起为更多的开发者带来 Docker 体验——构建新的软件和为项目做贡献。
这其中也有许多令人困惑的地方,比如在 Windows Server 上运行 Docker 意味着什么。这里有一些要点需要澄清:
Windows Server 端口之上的 DockerEngine 并不是一个头文件,也不是一个不同的项目,它同样为 Linux 和 Windows 构建的开源代码库。
Windows Server 之上的 Docker 技术预览版功能尚未完善,大部分的 Docker 命令你已经知道将在 Windows Server 正常工作。例如,你可以像在 Linux 上一样编写一个 Dockerfile 和 docker build 。
Windows Server 之上的 Docker daemon 没有运行 Linux image 。不涉及虚拟化。 Windows Server Containers 重用( reuse )主机内核并为进程创建一个沙箱环境,就像在 Linux 之上一样。
这意味着 Docker 正在成为运行进程时一个平台不可知论的接口。例如,有一个一致的 API 允许跨 Linux 和 Windows Server 混合集群主机分发工作负载,这个混合集群是通过 Docker Swarm 使用单一的 DockerCLI 和相同的 Docker 指令编排的。没有任何新命令学习,相同的开发人员构建软件时现在有了更多的选择。
这项工作始于 2014 年 11 月,对于一个开源项目,它让我们保持与微软不可思议的互动。即使我们承认在早期有点怀疑,现在我们不得不承认我们已经被微软的贡献者的进度大为吃惊(真的,有点不知所措),从 Ahmet Alp Balkan 和他在客户端的工作,紧随其后的是 John Howard, John Starks, and Stefan Wernli 守护进程方面。说真的,谢谢加入 Docker 的贡献者社区。
总的来说,微软团队通过大约 180000 行代码修改实现了这一点,所有这些全部公开并且正在经过严格的 Docker 项目评估过程。
Introducing Nyancat, our best ANSi Emulator stress test.
容器运行和内核依赖
人们普遍认为 Docker 广泛使用 Linux 内核。同样,微软已经将集装箱化基本体添加到 Windows 内核,允许任何用户代码执行过程在沙箱环境中。这些功能只有在刚刚发布的 Windows Server 2016 Tech Preview 3 (TP3 )上获得,这使得它成为目前唯一的 Windows 能够运行 Docker daemon 的 Windows Server 操作系统。
在 Docker 的代码库中,容器的执行块称为 execdriver ,作为一个在 Linux 上的默认实现调用 tolibcontainer ——在不久的将来将依靠 runC 。对于 Windows 容器,微软 Windows 团队将其融入 Windows specific execdriver 。就像它的 Linux 副本,这个实现快速调用内核代码,以及通过 microsoft/hccshim 包调用 Host Compute Service 。
有趣的是,我被告知,这是历史上第一次 Microsoft Windows 基础团队为开源项目贡献代码,这太酷了,不是吗?
持续集成
持续集成是一个保护项目取得进展的重要环节。事实上,绝大多数的贡献者运行 Linux ,不一定有环境或时间来验证他们的补丁不破坏构建 Windows 。
这就是为什么第一步和关键的一步是 build green (甚至删除了许多块),为了使 Windows Server 编译作为持续集成工作。微软的团队发送补丁来 push the Windows port forward , CI 将确保没有其他贡献增加更多不可移植的代码,或者更糟的是,破坏已经移植的代码。
开始尝试
我们很兴奋你下载并试用 Docker 在 Windows 服务器。记住,这是一个技术预览版,所以有一些局限性和命令 docker push 在这个版本不支持。有问题,记得反馈给我们。
备注:本文由张鹏程编译整理,原文链接: http://blog.docker.com/2015/08/tp-docker-engine-windows-server-2016/
1
zhangchioulin 2015-08-27 18:12:01 +08:00 via Android
好…好牛逼
|
2
c742435 2015-08-27 18:56:33 +08:00
我就想知道兼容不兼容原有的 Linux 镜像。
|
3
bdbai 2015-08-27 19:12:49 +08:00 via iPhone
问问"张鹏"是用什么语言写的,开源嘛。
|
4
zhjits 2015-08-28 13:00:43 +08:00
一个平台不可知论的接口……………………
|