Machine: 等待主机启动...(hyperv)

创建于 2017-12-07  ·  16评论  ·  资料来源: docker/machine

_我只让这个问题开放了一段时间,如果没有人再报告,我会在关闭前保留几天。 一旦问题再次出现,我将重新打开它。 如果您看到问题已关闭,请随时在下面留下您的问题。_

已解决:首先尝试停止使用--hyperv-memory因为即使通过 hyper-v-manager 调整它也无法启动您的虚拟机。 此外,您应该明确指定--hyperv-virtual-switch以允许 docker 正确连接。 如果它仍然不起作用,那么尝试通过 _windows 网络适配器_设置手动删除虚拟交换机桥,并使用 _hyper-v manager_ 再次创建它。
另请参阅下面的另一个解决方案


创建新虚拟机时挂起。
我为 virtualbox 关注了几个类似的问题,比如 #3826,但没有运气。

设置

视窗 10 x64
boot2docker - v17.11.0-ce
docker - 17.11.0-ce

所描述的虚拟交换机通过Hyper-V管理使这里

重现步骤

1 安装 docker 并在 windows 功能中启用 hyper-v 功能
2 启用虚拟交换机
3 $ docker-machine create -d hyperv --hyperv-memory 512 vm1
4 永远挂起

screenshot_3

我还尝试将--debug标志与相同的命令一起使用,并得到了这个(可点击的)输出:

 Docker 机器版本:0.13.0,构建 9ba6da9
在 C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe 找到二进制路径
为驱动程序 hyperv 启动插件服务器
插件服务器监听地址 127.0.0.1:56251
 () 调用 .GetVersion
使用 API 版本 1
 () 调用 .SetConfigRaw
 () 调用 .GetMachineName
 (标志查找)调用 .GetMachineName
 (标志查找)调用 .DriverName
 (标志查找)调用 .GetCreateFlags
在 C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe 找到二进制路径
为驱动程序 hyperv 启动插件服务器
插件服务器监听地址 127.0.0.1:56255
 () 调用 .GetVersion
使用 API 版本 1
 () 调用 .SetConfigRaw
 () 调用 .GetMachineName
 (vm1) 调用 .GetMachineName
 (vm1) 调用 .DriverName
 (vm1) 调用 .GetCreateFlags
 (vm1) 调用 .SetConfigFromFlags
 (vm1) 调用 .PreCreateCheck
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @(Get-Command Get-VM).ModuleName
 (vm1) DBG | [标准输出=====>]:Hyper-V
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent())。 IsInRole("Hyper-V 管理员")
 (vm1) DBG | [标准输出=====>]:假
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent())。 IsInRole([Security.Principal.WindowsBuiltInRole]“管理员”)
 (vm1) DBG | [标准输出=====>]:真
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive (Get-VMSwitch).Name
 (vm1) DBG | [标准输出=====>]:DockerNAT
 (vm1) DBG | 数字视频系统
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | 本地 Boot2Docker ISO 版本:v17.11.0-ce
 (vm1) 调用 .GetConfigRaw
 (vm1) 调用 .Create
 (vm1) DBG | 本地 Boot2Docker ISO 版本:v17.11.0-ce
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive (Get-VMSwitch).Name
 (vm1) DBG | [标准输出=====>]:DockerNAT
 (vm1) DBG | 数字视频系统
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent())。 IsInRole([Security.Principal.WindowsBuiltInRole]“管理员”)
 (vm1) DBG | [标准输出=====>]:真
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive New-VHD -Path 'C:\Users\Alex\.docker\machine\machines\vm1\fixed .vhd' -SizeBytes 10MB - 固定
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG |
 (vm1) DBG | 计算机名:RHEA
 (vm1) DBG | 路径:C:\Users\Alex\.docker\machine\machines\vm1\fixed.vhd
 (vm1) DBG | Vhd格式:VHD
 (vm1) DBG | VhdType : 固定
 (vm1) DBG | 文件大小:10486272
 (vm1) DBG | 尺寸:10485760
 (vm1) DBG | 最小尺寸:
 (vm1) DBG | 逻辑扇区大小:512
 (vm1) DBG | 物理扇区大小:512
 (vm1) DBG | 块大小:0
 (vm1) DBG | 父路径:
 (vm1) DBG | 磁盘标识符:03143A6A-646C-4DDC-AEBA-469A41EC764C
 (vm1) DBG | 碎片百分比:0
 (vm1) DBG | 对齐:1
 (vm1) DBG | 附:假的
 (vm1) DBG | 磁盘编号:
 (vm1) DBG | 数字 :
 (vm1) DBG |
 (vm1) DBG |
 (vm1) DBG |
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | 编写魔术焦油标头
 (vm1) DBG | 编写 SSH 密钥 tar 标头
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Convert-VHD -Path 'C:\Users\Alex\.docker\machine\machines\vm1\fixed .vhd' -DestinationPath 'C:\Users\Alex\.docker\machine\machines\vm1\disk.vhd' -VHDType 动态 -DeleteSource
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Resize-VHD -Path 'C:\Users\Alex\.docker\machine\machines\vm1\disk .vhd' -SizeBytes 20000MB
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive New-VM vm1 -Path 'C:\Users\Alex\.docker\machine\machines\vm1' -SwitchName 'DockerNAT' -MemoryStartupBytes 512MB
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG | 名称 状态 CPUUsage(%) MemoryAssigned(M) Uptime Status Version
 (vm1) DBG | ---- ----- ----------- ----------------- ------ ------ - ------
 (vm1) DBG | vm1 关闭 0 0 00:00:00 正常运行 8.0
 (vm1) DBG |
 (vm1) DBG |
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Set-VMDvdDrive -VMName vm1 -Path 'C:\Users\Alex\.docker\machine\machines\ vm1\boot2docker.iso'
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Add-VMHardDiskDrive -VMName vm1 -Path 'C:\Users\Alex\.docker\machine\machines\ vm1\磁盘.vhd'
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Start-VM vm1
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive ( Get-VM vm1 ).state
 (vm1) DBG | [标准输出=====>]:运行
 (vm1) DBG |
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive (( Get-VM vm1 ).networkadapters[0]).ipaddresses[0]
 (vm1) DBG | [标准输出=====>]:
 (vm1) DBG | [标准错误=====>]:
 (vm1) DBG | [执行 ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive ( Get-VM vm1 ).state
 (vm1) DBG | [标准输出=====>]:运行


我也尝试删除user/.docker/machine/cache/boot2docker.iso并再次创建 vm 但没有帮助。 反正机器挂了。

最有用的评论

我也遇到过这个问题,解决了,我认为根本原因是:文档不清晰。
解决这个问题:
请确保您选择了正确的网络
列表中有多个网络,但可能只有一个已启用
您可以在以下位置检查状态:控制面板\网络和 Internet\网络连接
您也可以通过:网络和共享中心/更改适配器设置

详细解释见下图:
image

所有16条评论

我有类似的问题,除了我的机器启动并且它永远不会获得 IP 地址,即使我遵循了文档中的所有内容。

docker --version:Docker 版本 17.12.0-ce-rc3,构建 80c8033
docker-machine --version: docker-machine.exe 版本 0.13.0,构建 9ba6da9

这是边缘,同样的事情发生在稳定。

尽管如此,我注意到由于某种原因我无法运行 Windows 容器,所以看起来我当前的设置有问题。
赢得 10 构建:17025

docker-machine --debug -d "hyperv" --hyperv-virtual-switch "BridgedConnection" worker3

Found binary path at C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe
Launching plugin server for driver hyperv
Plugin server listening at address 127.0.0.1:49302
() Calling .GetVersion
Using API Version  1
() Calling .SetConfigRaw
() Calling .GetMachineName
(flag-lookup) Calling .GetMachineName
(flag-lookup) Calling .DriverName
(flag-lookup) Calling .GetCreateFlags
Found binary path at C:\Program Files\Docker\Docker\Resources\bin\docker-machine.exe
Launching plugin server for driver hyperv
Plugin server listening at address 127.0.0.1:49306
() Calling .GetVersion
Using API Version  1
() Calling .SetConfigRaw
() Calling .GetMachineName
(worker3) Calling .GetMachineName
(worker3) Calling .DriverName
(worker3) Calling .GetCreateFlags
(worker3) Calling .SetConfigFromFlags
Running pre-create checks...
(worker3) Calling .PreCreateCheck
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @(Get-Command Get-VM).ModuleName
(worker3) DBG | [stdout =====>] : Hyper-V
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole("Hyper-V Administrators")
(worker3) DBG | [stdout =====>] : False
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")
(worker3) DBG | [stdout =====>] : True
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive (Get-VMSwitch).Name
(worker3) DBG | [stdout =====>] : nat
(worker3) DBG | Default Switch
(worker3) DBG | BridgedSwitch
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | local Boot2Docker ISO version:  v17.09.1-ce
(worker3) Calling .GetConfigRaw
Creating machine...
(worker3) Calling .Create
(worker3) DBG | local Boot2Docker ISO version:  v17.09.1-ce
(worker3) Copying C:\Users\McMau\.docker\machine\cache\boot2docker.iso to C:\Users\McMau\.docker\machine\machines\worker3\boot2docker.iso...
(worker3) Creating SSH key...
(worker3) Creating VM...
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive (Get-VMSwitch).Name
(worker3) DBG | [stdout =====>] : nat
(worker3) Using switch "BridgedSwitch"
(worker3) DBG | Default Switch
(worker3) DBG | BridgedSwitch
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive @([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principa
l.WindowsBuiltInRole] "Administrator")
(worker3) DBG | [stdout =====>] : True
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) Creating VHD
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive New-VHD -Path 'C:\Users\McMau\.docker\machine\machines\worker3\fixed.vhd' -SizeBytes 10MB -Fixed
(worker3) DBG | [stdout =====>] :
(worker3) DBG |
(worker3) DBG | ComputerName            : BIZNISPC
(worker3) DBG | Path                    : C:\Users\McMau\.docker\machine\machines\worker3\fixed.vhd
(worker3) DBG | VhdFormat               : VHD
(worker3) DBG | VhdType                 : Fixed
(worker3) DBG | FileSize                : 10486272
(worker3) DBG | Size                    : 10485760
(worker3) DBG | MinimumSize             :
(worker3) DBG | LogicalSectorSize       : 512
(worker3) DBG | PhysicalSectorSize      : 512
(worker3) DBG | BlockSize               : 0
(worker3) DBG | ParentPath              :
(worker3) DBG | DiskIdentifier          : 54A43223-9A0E-4E76-B3AF-15AC85F64942
(worker3) DBG | FragmentationPercentage : 0
(worker3) DBG | Alignment               : 1
(worker3) DBG | Attached                : False
(worker3) DBG | DiskNumber              :
(worker3) DBG | IsPMEMCompatible        : False
(worker3) DBG | AddressAbstractionType  : None
(worker3) DBG | Number                  :
(worker3) DBG |
(worker3) DBG |
(worker3) DBG |
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | Writing magic tar header
(worker3) DBG | Writing SSH key tar header
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Convert-VHD -Path 'C:\Users\McMau\.docker\machine\machines\worker3\fixed.vhd' -DestinationPath 'C:\Users\McMau\.docker\machine\machines\worker3\disk.vhd' -VHDType Dynamic -DeleteSource
(worker3) DBG | [stdout =====>] :
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Resize-VHD -Path 'C:\Users\McMau\.docker\machine\machines\worker3\disk.vhd' -SizeBytes 20000MB
(worker3) DBG | [stdout =====>] :
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive New-VM worker3 -Path 'C:\Users\McMau\.docker\machine\machines\worker3' -SwitchName 'BridgedSwitch' -MemoryStartupBytes 1024MB
(worker3) DBG | [stdout =====>] :
(worker3) DBG | Name    State CPUUsage(%) MemoryAssigned(M) Uptime   Status             Version
(worker3) DBG | ----    ----- ----------- ----------------- ------   ------             -------
(worker3) DBG | worker3 Off   0           0                 00:00:00 Operating normally 8.2
(worker3) DBG |
(worker3) DBG |
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Set-VMDvdDrive -VMName worker3 -Path 'C:\Users\McMau\.docker\machine\machines\worker3\boot2docker.iso'
(worker3) DBG | [stdout =====>] :
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Add-VMHardDiskDrive -VMName worker3 -Path 'C:\Users\McMau\.docker\machine\machines\worker3\disk.vhd'
(worker3) DBG | [stdout =====>] :
(worker3) Starting VM...
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive Start-VM worker3
(worker3) DBG | [stdout =====>] :
(worker3) DBG | [stderr =====>] :
(worker3) Waiting for host to start...
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive ( Get-VM worker3 ).state
(worker3) DBG | [stdout =====>] : Running
(worker3) DBG |
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive (( Get-VM worker3 ).networkadapters[0]).ipaddresses[0]
(worker3) DBG | [stdout =====>] :
(worker3) DBG | [stderr =====>] :
(worker3) DBG | [executing ==>] : C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -NoProfile -NonInteractive ( Get-VM worker3 ).state
(worker3) DBG | [stdout =====>] : Running
(worker3) DBG |

@knilecrack
Virtual-V 管理器中的沙箱显示什么? 请制作和分享截图。
似乎 vm 无法连接到网络,因为没有分配 ip 或 vm 无法正常启动。

你是这个意思吗? https://1drv.ms/u/s!AtmVXevYpYur6j6WHvexC6ShiqkO
所以基本上我现在开始工作了,在 Windows 更新到 17063 之后,我完全卸载了 docker 我能找到的所有东西(从 programdata 和 appdata),并使用 dism 重新安装了 hyperv。
现在唯一的问题是需要 5-10 分钟才能获得 IP。
有没有更深入地解决这些连接问题的方法?

有没有更深入地解决这些连接问题的方法?

真不知道。 ¯_(ツ)_/¯

我会关闭问题,直到问题再次出现。

大家好,新年快乐。
我是 Docker 的初学者,我和你有同样的问题。
我想学习 Docker入门的官方教程

我正确地遵循了此页面Microsoft Hyper-V 的说明
但是我的 PowerShell 在等待主机启动时被阻止
docker-machine create -d hyperv --hyperv-virtual-switch "myswitch" myvm1

image
_对不起,是法语_

image

我的设置

Windows:
Windows 10 PRO
Version: 1709
OS: 16299.125 

Client:
 Version:      17.09.1-ce
 API version:  1.32
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu Dec  7 22:22:26 2017
 OS/Arch:      windows/amd64

Server:
 Version:      17.09.1-ce
 API version:  1.32 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   19e2cf6
 Built:        Thu Dec  7 22:28:28 2017
 OS/Arch:      linux/amd64
 Experimental: true

docker-machine.exe version 0.13.0, build 9ba6da9

我能做些什么来解决这个问题?
再次感谢和新年快乐。

@rifton007
问题仍然存在吗?
虚拟机似乎正常启动,但尚未连接到网络。

从 --debug 选项开始并粘贴输出。

嘿,如果您仍然有问题,请尝试在 VM 中手动设置 IP 地址。 第一次通过右键单击您尝试用于 VM 的适配器获取交换机的子网,选择状态,然后选择详细信息,您将看到交换机的网络和子网。 然后您可以尝试从该机器上的该子网分配一个 IP。

从 hyperv 连接到 VM,然后只需键入: ifconfig eth0 172.27.240.10 netmask 255.255.240.0 (在我的情况下)

如果这对您有用,请告诉我,您可以通过docker-machine ls查看

我也遇到过这个问题,解决了,我认为根本原因是:文档不清晰。
解决这个问题:
请确保您选择了正确的网络
列表中有多个网络,但可能只有一个已启用
您可以在以下位置检查状态:控制面板\网络和 Internet\网络连接
您也可以通过:网络和共享中心/更改适配器设置

详细解释见下图:
image

@timothy2005感谢您的努力。 👍 在顶部添加了指向您的解决方案的链接。

@hinell 非常感谢!

我面临与@rifton007相同的问题https://github.com/docker/machine/issues/4328#issuecomment -354620409

@timothy2005https://github.com/docker/machine/issues/4328#issuecomment -402993480 解决。 谢谢..

我也遇到过这个问题,解决了,我认为根本原因是:文档不清晰。
解决这个问题:
请确保您选择了正确的网络
列表中有多个网络,但可能只有一个已启用
您可以在以下位置检查状态:控制面板\网络和 Internet\网络连接
您也可以通过:网络和共享中心/更改适配器设置

详细解释见下图:
image

它对我有用! tks

我遇到了同样的问题。 在管理模式下从 powershell 窗口重试,第一个 vm 大约需要 10 分钟,虽然似乎卡在了启动 Vm 步骤但最终完成了任务。 第二个虚拟机的创建速度要快得多。

通过不添加 -hyperv-memory 解决这个问题!在合适的时候我将它设置为 512,但是当我删除它时,它可以工作。

我的出路,谢谢@moviewang

此页面是否有帮助?
0 / 5 - 0 等级