正如duct_tape_coder在评论中所指出的:
微软已经改进了容器的网络选项,现在允许每个Pod使用多个容器,并且命名空间得到了改进。
在Linux主机上没有运行“Windows容器”。
并且Linux容器不会直接在Windows服务器上运行,因为它依赖于对Linux内核的系统调用。
您可以通过虚拟机在任何Windows机器上运行这些Linux容器。
这就是Docker工具箱将安装的内容。
很快将会支持在Windows上使用Docker,但那只适用于Windows容器,而不是Linux容器。
更新2017:是的,LinuxKit允许通过Hyper-V隔离包装器在Windows平台上运行Linux容器,通过从linuxkit构建的最小Linux操作系统来实现。
这仍然是相同的想法:Linux在Windows上运行在虚拟机中。
这不是在Windows服务器上部署Linux服务器:只是在运行在Windows虚拟机中的Linux服务器内部部署。
请参见 "Linux and Windows, living together, total chaos! (OK, Kubernetes 1.5)"
Kubernetes 1.5 包括了对 Windows Server 容器的 alpha 支持,这是一种类似 Docker 的共享内核模型,以及 Hyper-V 容器,这是一种单内核模型,提供了更好的多租户环境隔离性(代价是更大的延迟)。
最终结果是能够创建一个单一的 Kubernetes 集群,其中包括不仅是运行 Linux 容器的 Linux 节点或运行 Windows 容器的 Windows 节点,而且将两者并排放置,获得真正的混合体验。
例如,一个单独的服务可以有使用 Windows Server 容器的 POD 和使用 Linux 容器的其他 POD。
但是:
尽管它看起来完全功能,但在这个早期版本中似乎存在一些限制,包括: - Kubernetes主节点仍必须在Linux上运行,因为它的依赖关系是如何编写的。虽然可以移植到Windows,但目前团队认为更好地将重点放在客户端组件上。 - Windows容器没有本地支持网络覆盖层,因此网络受到限制。(有其他解决方案,但它们不是本地可用的。)Kubernetes Windows SIG正在与Microsoft合作解决这些问题,他们希望在明年初发布Kubernetes 1.6时已经取得了进展。 - 在Windows容器之间进行网络传输更加复杂,因为每个容器都有自己的网络命名空间,因此现在建议您使用单容器pod。 - 运行在Windows Server容器中的应用程序可以使用Windows支持的任何语言运行。如果.NET应用程序是使用.NET Core编写的,则可以在Linux容器中运行.NET应用程序。Nano Server操作系统也支持.NET Core,可以部署在Windows Server容器上。