【问题标题】:docker in windows need Hyper-V enabled?windows中的docker需要启用Hyper-V吗?
【发布时间】:2018-09-30 05:00:18
【问题描述】:

Docker 是否需要在 Windows 中启用 Hyper-V?如果是,为什么?

Hyper-V在这种情况下的作用是什么?

我正在使用 Windows 10 家庭版。 hyper-V 安装 Docker pls 的替代方案是什么?

【问题讨论】:

标签: docker


【解决方案1】:

如果您使用的是 windows10 专业版,并且您的 bios 支持硬件虚拟化,建议您启用 Hyper-V。

在windows10中运行linux容器,其实还是需要一个linux系统作为docker主机,因为linux容器不能和windows共享内核。

如果启用 hyper-v,docker-windows 将在 hyper-v 中自动设置一个MobyLinuxVm 作为虚拟机,充当 docker 的主机。与传统解决方案相比,我的意思是在 virtualbox 中安装一个 linux。 Hyper-v的性能要好得多,因为它不依赖于windows操作系统,就像vmware-esx一样基于硬件的设置。

最后,如果你使用的是家庭版的windows10,你需要安装一个virtualbox作为docker的宿主机并使用docker toolbox,具体桌面解决方案参考https://docs.docker.com/toolbox/overview/

更新一些你可能想知道的附加点:

a) linux 容器:

Docker 容器必须与主机共享内核,Windows 上没有 linux 内核,所以在所有情况下,你都必须有一个带有 linux 的虚拟机作为 docker 主机,如果不支持 hyper-v,则可以是 hyper-v 或 virtualbox .

b) windows 容器:

理论上,windows容器可以共享windows的内核,不需要虚拟机。

但是微软对容器的支持相对于linux来说太晚了,所以对于不同的主机,它使用不同的解决方案,参见microsoft web site的下一章:

Windows 容器包括两种不同的容器类型或运行时。

Windows Server 容器 – 通过进程和命名空间隔离技术提供应用程序隔离。 Windows Server 容器与容器主机和主机上运行的所有容器共享一个内核。这些容器不提供恶意的安全边界,不应用于隔离不受信任的代码。由于共享内核空间,这些容器需要相同的内核版本和配置。

Hyper-V 隔离 – 通过在高度优化的虚拟机中运行每个容器来扩展 Windows Server 容器提供的隔离。在此配置中,容器主机的内核不与同一主机上的其他容器共享。这些容器专为具有与虚拟机相同的安全保证的恶意多租户托管而设计。由于这些容器不与主机或主机上的其他容器共享内核,因此它们可以运行具有不同版本和配置的内核(在受支持的版本中)——例如,Windows 10 上的所有 Windows 容器都使用 Hyper-V 隔离来利用Windows Server 内核版本和配置。

【讨论】:

  • 感谢您的回答。那么,当我们在 docker 中使用 windows 容器时,它使用 windows 操作系统内核,而对于 Linux 容器,它使用作为 Hyper-V 的一部分创建的 Linux 操作系统?
  • 对于 linux 容器是正确的,但对于 windows 容器,它有点复杂,请参阅我更新的答案,其中引用了来自 microsoft 的内容。
  • 我有一个疑问:-- 如果我尝试使用不同于本地构建(windows 服务器:1709)的不同构建来拉取 docker 镜像(比如:windows server core:1809),这样的镜像将运行在具有不同内核的 hyperv 中。我对吗?那么这些图像的内核将在哪里创建呢?
  • 当你在windows server上使用--isolation=hyperv切换到hpyerv modal时,hyper-v管理器中会有一个自动设置vm(这是windows hyper-v上linux容器的东西,我还没有尝试过用于 windows 容器,但您可以在 windows 服务器中验证它),内核将在自动创建的 hyperv vm 中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-01
  • 2020-10-16
相关资源
最近更新 更多