windows中的docker是否需要启用Hyper-V?

windows中的docker是否需要启用Hyper-V?,docker,Docker,Docker是否需要在windows中启用Hyper-V?若有,原因为何 在这种情况下,Hyper-V的作用是什么 我正在使用Windows 10 home。hyper-V安装Docker pls的替代方案是什么?如果您使用windows10 professional&您的bios支持硬件虚拟化,建议您启用hyper-V 事实上,在windows10中运行linux容器时,它仍然需要一个linux系统作为docker主机,因为linux容器无法与windows共享内核 如果启用hyper-v,d

Docker是否需要在windows中启用Hyper-V?若有,原因为何

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


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

如果您使用windows10 professional&您的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,有关遗留桌面解决方案的详细信息,请参阅

更新您可能想知道的其他一些要点:

a) linux容器:

Docker容器必须与主机共享内核,windows上没有linux内核,因此在所有情况下,您都必须拥有一个以linux作为Docker主机的虚拟机,如果不支持hyper-v,则为hyper-v或virtualbox

b) windows容器:

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

但与linux相比,microsoft对容器的支持太迟了,因此对于不同的主机,它使用不同的解决方案,请参见下一章:

Windows容器包括两种不同的容器类型,即运行时

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

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


可能重复感谢您的回答。因此,当我们在docker中使用windows容器时,它使用windows操作系统内核,而对于Linux容器,它使用作为Hyper-V的一部分创建的Linux操作系统?对于Linux容器来说是正确的,但是对于windows容器,它有点复杂,请参阅我的更新答案,其中引用了来自microsoft的内容。我有一个疑问:--如果我尝试提取docker映像(例如:windows server core:1809)与本地版本(windows server:1709)不同的版本,这样的映像将在具有不同内核的hyperv中运行。我说得对吗?那么这些映像的内核将在哪里创建?当您在windows server上使用
--isolation=hyperv
切换到hpyerv模式时,hyper-v管理器中将有一个自动设置vm(这是windows hyper-v上linux容器的功能,我从未在windows容器上尝试过,但您可以在windows服务器上验证),内核将位于自动创建的hyperv vm中。