Docker 因为 windows 无法启动

Docker for windows failing to start

我刚刚升级到 Windows 10 Pro 创作者更新 | 1703 | OS 内部版本:15063.138。

当 docker 尝试启动时出现以下错误:

Unable to create: You cannot call a method on a null-valued expression.
at <ScriptBlock>, <No file>: line 137
at Get-NetAdapter<End>, <No file>: line 181
at New-Switch, <No file>: line 137
at <ScriptBlock>, <No file>: line 381
   at Docker.Backend.HyperV.RunScript(String action, Dictionary`2 parameters)
   at Docker.Backend.ContainerEngine.Linux.Start(Settings settings)
   at Docker.Core.Pipe.NamedPipeServer.<>c__DisplayClass8_0.<Register>b__0(Object[] parameters)
   at Docker.Core.Pipe.NamedPipeServer.RunAction(String action, Object[] parameters)

现在我已经尝试了所有常用的故障排除方法来尝试修复它,但没有成功,即卸载 docker 重新安装,关闭 hyper-V,然后重新打开它。

我什至在 C:\Program Files\Docker\Docker\resources

中使用 Powershell 尝试 运行 以下命令
.\MobyLinux.ps1 -Destroy
.\MobyLinux.ps1 -Create

创建任务抛出以下错误:

? : You cannot call a method on a null-valued expression.
At C:\Program Files\Docker\Docker\resources\MobyLinux.ps1:137 char:37
+ ...  Get-NetAdapter | ? { $_.Name.StartsWith("vEthernet ($SwitchName)") }
+                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidOperation: (:) [Where-Object], RuntimeException
    + FullyQualifiedErrorId : InvokeMethodOnNull,Microsoft.PowerShell.Commands.WhereObjectCommand

有什么解决办法吗?

对于遇到同样问题的人,我所做的修复是。

  1. 卸载 Docker 并从控制面板中删除 Hyper-V。进去 设备管理器 -> 网络适配器。
  2. 右键单击并卸载任何不是您实际物理网卡的东西
  3. 重新启动并重新打开 Hyper-V,然后重新安装 Docker(或者只安装 Docker,因为它会为您打开 Hyper-V)。