Docker for Windows和Windows上的Docker有什么区别?

时间:2016-07-19 17:17:23

标签: windows docker docker-for-windows docker-desktop docker-on-windows

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

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

我真正想要的是两者之间存在的明显差异,某种良好的比较。每个都试图实现什么功能,它们在哪里相似,它们在哪里不同。他们会永远不同,还是会聚在一起?

2 个答案:

答案 0 :(得分:8)

Windows上的Docker 是一种通俗的方式来引用在Windows上运行的Docker引擎。我认为将其视为 Windows容器主机是有帮助的,所以是仅限Windows容器。这将是您在Windows Server 2016计算机上运行的内容。所以也许更好的名称是 Windows Server的Docker ,我相信人们也使用过它。我还是喜欢Windows容器主机。这意味着它在一天结束时只有Docker引擎,甚至不需要任何Docker客户端(docker CLI,docker-compose等)。

适用于Windows的Docker 是一款用于在Windows上运行 Linux和Windows容器的产品。它不适用于生产环境,而是用于Windows的桌面/客户端SKU,因此需要Windows 10。所以你可以把它想象成Windows 10的Docker。因为DfW可以运行两种容器类型,所以它在你的机器上设置了不同的配置:

  • 使用Linux Containers时,DfW会创建一个带有Hyper-V的MobyLinuxVM,其中透明地运行Linux容器,就好像它们在Windows 10主机上运行一样。
  • 使用Windows Containers时,DfW会在Windows上安装与Docker相同的组件,以便您拥有Windows容器主机。您现在已经安装了Windows Docker Engine。然后,这允许您在Win 10客户端SKU上运行Windows容器。

理论上你可以在Windows Server上安装DfW,我没试过,所以我不知道这是否会失败,但为什么你要在生产的Windows主机上运行Linux容器?在生产中,您将拥有运行Linux容器的Linux容器主机和运行Windows容器的Windows容器主机,这将避免开销并简化操作。

答案 1 :(得分:2)

只需在Wes关于Windows的Docker的答案上加上一些关于实验性LCOW的细节,这就是您想要在Windows主机上并行执行Windows和Linux容器的内容。

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

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

在第一种方法中,适用于Windows的Docker窗口将在Windows主机上具有docker daemon服务,并将在Linux MOBY VM上提供。因此,基本上,您将拥有2个不同的Docker主机。一种在Windows主机上运行,​​仅管理 Windows容器,另一种在Linux Moby VM上运行,并且仅管理 Linux容器

  

需要注意的是,所有Linux容器将在Moby VM上共享一个Linux内核,所有Windows容器将在Windows主机上共享一个Windows内核。

enter image description here

第二种方法真的让事情变得有趣

具有Hyper-V隔离功能的Linux容器在经过优化的Linux VM中运行每个Linux容器,而Linux OS仅具有足以运行容器的操作系统。每个 Linux容器都有自己的内核和自己的VM沙箱。它们也由Windows上的Docker直接管理。

enter image description here

  

此方法的主要区别在于,在 Windows主机上仅运行一个docker daemon服务,并管理 Windows和Linux 容器。

     

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

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