无法创建Windows Docker机器?“Hyper-V PowerShell模块不可用”

11

我刚刚安装了Docker,并尝试创建一个Windows(不是Linux)Docker机器,但失败了?

PS C:\> docker-machine.exe create --driver hyperv default
Creating CA: C:\Users\...\.docker\machine\certs\ca.pem
Creating client certificate: C:\Users\...\.docker\machine\certs\cert.pem
Running pre-create checks...
Error with pre-create check: "Hyper-V PowerShell Module is not available"

我下载了更新版本的docker-machine (https://github.com/docker/machine/releases/tag/v0.15.0),但遇到了一个新错误。

PS C:\> .\bin\docker-machine-Windows-x86_64.exe create --driver hyperv default
Running pre-create checks...
Error with pre-create check: "no External vswitch found. A valid vswitch must be available for this command to run. Check https://docs.docker.com/machine/drivers/hyper-v/"

你是如何解决这个问题的? - Naxi
5个回答

14

我遇到了与以下信息相同的问题:

Error with pre-create check: "vswitch \"My Internal Switch\" not found"

我通过打开我的Hyper-V管理器并在图形用户界面中创建虚拟交换机来解决了这个问题。

Hyper-V虚拟交换机

然后在命令行中运行同样的命令成功了。


10
我认为您需要在Hyper-V管理器中创建一个网络交换机,并在创建虚拟机时指定它。
例如,如果您创建了名为external-switch的外部交换机,则在创建虚拟机时可以像这样指定它: docker-machine create --driver hyperv --hyperv-virtual-switch external-switch [Machine Name]
有关更多信息,请参见此链接:https://docs.docker.com/machine/drivers/hyper-v

1
对我很有帮助。这篇博客也帮了我:https://rominirani.com/docker-machine-windows-10-hyper-v-troubleshooting-tips-367c1ea73c24 - Karbos 538

7
当你运行以下命令来创建一个 Docker Machine 时,
docker-machine create --driver hyperv hypervdockermachine

您可能会遇到以下错误。
Error with pre-create check: "no External vswitch found. A valid vswitch must be available for this command to run. Check https://docs.docker.com/machine/drivers/hyper-v/"

在Windows 10上创建docker machine,请按以下步骤进行操作。

在Windows搜索中键入“hyper v”并启动Hyper-V Manager。

Windows 10上的Hyper V管理器

接下来,单击“虚拟交换机管理器”,然后创建一个新的外部虚拟交换机。

新建虚拟交换机

创建一个新的虚拟交换机。

输入新虚拟交换机的详细信息

现在运行以下命令。

docker-machine create --driver hyperv --hyperv-virtual-switch docker-machine-external-switch hypervdockermachine

请注意,docker-machine-external-switch是你刚刚创建的hyperv-virtual-switch,而hypervdockermachine是即将使用上述命令创建的docker-machine的名称。

2

默认交换机(Default Switch)就是您需要的!

docker-machine create --driver hyperv --hyperv-virtual-switch "Default Switch" node1


什么是“默认开关”,它与其他现有答案相比有何优势? - XouDo
事实上,我来到这里就是为了解决提出的问题。而问题的重点是如何创建虚拟机,而不是如何配置 hyperv。起初,我被引导到了第一个答案,这就是为什么我浪费了很多时间,直到我尝试了一切...最终,我通过设置已经存在的网络,得到了我需要的和问题中所描述的内容... - LuckyBlakc
实际上这对我很有帮助!别忘了在 Git Bash 中运行此命令,而不是在 PowerShell 中运行,因为后台有一些 bash 脚本,否则会失败。 - Asdf11
"命令未找到" - likejudo

0

我通过将我的虚拟交换机从内部网络移动到外部网络来解决了我的错误。不确定为什么它在内部会出现这种错误:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接