Docker for Windows和Docker on Windows有什么区别?

34

Windows上的Docker似乎是内置于Windows Server 2016中的?它支持在Docker容器中运行Windows和使用Windows作为Docker容器主机。它是否支持Linux?我认为不支持,它只支持运行Windows Docker容器。这也似乎是由Microsoft维护。

Docker for Windows似乎是Docker团队创建的一个单独的安装程序,将Linux Docker带到Windows上。因此,Windows可以成为Docker主机,但所有容器仍然只是普通的Linux容器。它是否支持Windows容器?我认为不支持,它只支持运行Linux Docker容器。这也似乎是由Docker维护的。

另一个有趣的注释是Docker Tools for Visual Studio似乎只支持Docker Desktop for Windows而不支持Windows上的Docker

我真正想了解的是两者之间的区别,需要一些好的比较。它们各自试图实现哪些功能?它们相似之处在哪里?它们的差异在哪里?它们永远不同,还是它们会合并?


由于仅提供链接的回答通常不受欢迎,因此我将评论此文章,该文章提供了有关Windows上Docker的良好概述:https://collabnix.com/a-comparative-study-of-docker-engine-on-windows-server-vs-linux-platform/ - Ed Randall
2个回答

31

Windows上的Docker是指在Windows操作系统上运行的Docker引擎的俗称。我认为它可以被理解为一个Windows容器主机,因此只能运行Windows容器,例如在Windows Server 2016机器上运行,有些人也称其为Docker for Windows Server,但我更喜欢称其为Windows容器主机。在最终版本中,它只有Docker引擎,甚至不需要安装任何Docker客户端(如docker CLI、docker-compose等)。

Windows下的Docker桌面版是用于在Windows操作系统上运行Linux和Windows容器的产品。它不适用于生产环境,而是适用于桌面/客户端SKU(存货单位)的Windows操作系统,因此需要Windows 10。你可以将它看作是适用于Windows 10的Docker。因为它可以运行两种类型的容器,所以它在您的计算机上设置了不同的配置:

  • 使用Linux容器时,Docker桌面版会创建一个带有Hyper-V的MobyLinuxVM,在其中透明地运行Linux容器,就好像它们在Windows 10主机上运行一样。
  • 使用Windows容器时,Docker桌面版会安装与Windows上的Docker相同的组件,因此你就拥有了一个Windows容器主机。现在你有了Windows Docker引擎设置,这样就可以在Windows 10客户端SKU上运行Windows容器了。

理论上,你可以在Windows Server上安装Docker桌面版。我没有尝试过,所以不知道是否会失败,但为什么要在生产环境中在Windows主机上运行Linux容器呢?在生产环境中,你应该有运行Linux容器的Linux容器主机和运行Windows容器的Windows容器主机,这将避免额外的开销并简化事情。


虽然这是一种hack方法,但您可以在Windows Server 2016中使用Docker for Windows:https://dev59.com/questions/VlgR5IYBdhLWcg3wr-8Y#42981131 - Boggin
有趣的是,当你下载“Docker Desktop for Windows”时,在这里https://hub.docker.com/editions/community/docker-ce-desktop-windows,你会得到“Docker for Windows Installer.exe”,并且可以简单地猜测它是哪一个。 - Marc

19

在Wes的关于Docker for Windows的回答之上,进一步补充有关实验性LCOW的细节,这是您在Windows主机上并行执行Windows和Linux容器所需的。

目前,有两种方法可以使用Docker for Windows和Hyper-V运行Linux容器:

  1. 在完整的Linux虚拟机中运行Linux容器-这通常是Docker今天所做的。
  2. 使用Hyper-V隔离在Windows上运行Linux容器(LCOW)-这是Docker for Windows中的新选项。

在第1个方法中,Docker for Windows将在Windows主机上具有docker守护程序服务,并且它也将在Linux MOBY VM上可用。因此,您将拥有2个不同的Docker主机。一个运行在Windows主机上,仅管理Windows容器,另一个运行在Linux Moby VM上,仅管理Linux容器

需要注意的是,所有Linux容器都将共享Moby VM上的单个Linux内核,而所有Windows容器都将共享Windows Host Machine上的单个Windows内核。

enter image description here

采用第二种方法,情况变得真正有趣,

Hyper-V隔离的Linux容器在优化的Linux虚拟机中运行,只有足够运行容器的操作系统。每个Linux容器都有自己的内核和自己的VM沙盒。它们也由Docker直接在Windows上管理。

enter image description here

这种方法的主要区别在于,在Windows主机上只运行一个Docker守护进程服务来管理Windows和Linux容器。

所有Windows容器将共享单个Windows内核,而每个Linux容器将有自己的Linux内核。

详细了解请参阅https://learn.microsoft.com/en-us/virtualization/windowscontainers/deploy-containers/linux-containers


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接