31

Windows 上的 Docker似乎是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而不是Docker on Windows

我真正在寻找的是两者之间的陈述差异,某种很好的比较。每个都试图实现哪些功能,它们在哪里相似,它们在哪里不同。他们会永远不同,还是会走到一起?

4

2 回答 2

24

Windows 上的 Docker是一种口语化方式,仅指在 Windows 上运行的 Docker 引擎。我发现将其视为Windows 容器主机很有帮助,所以是的,仅适用于 Windows 容器。这将是您在 Windows Server 2016 机器上运行的内容。所以也许更好的名字是Docker for Windows Server,我相信人们也使用过它。我仍然更喜欢 Windows 容器主机。这意味着它最终只有 Docker 引擎,甚至不需要任何 Docker 客户端(docker CLI、docker-compose 等)。

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

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

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

于 2016-10-29T15:37:10.150 回答
16

只是在 Wes 对 Docker for Windows 的回答之上添加一些关于实验性 LCOW 的细节,这是您正在寻找的在 Windows 主机上并行执行 Windows 和 Linux 容器的内容。

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

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

在第一种方法中,Windows windows 的 Docker 将在 Windows 主机上具有 docker 守护程序服务,并且它将在 Linux MOBY VM 上可用。所以基本上,你将有 2 个不同的 docker 主机。一种在您的 Windows 主机上运行,​​仅管理Windows 容器,另一种在您的 Linux Moby VM 上运行,仅管理Linux 容器

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

在此处输入图像描述

使用第二种方法,事情真的变得很有趣,

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

在此处输入图像描述

这种方法的主要区别在于,只有一个 docker 守护程序服务在Windows 主机上运行并同时管理Windows 和 Linux容器。

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

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

于 2019-10-20T00:05:03.167 回答