ruby - Vagrant 创建虚拟机,但突然将其销毁:(
问题描述
我对 Vagrant 有意见,我希望他们消失。请帮我。当我安装 Vagrant 时,一切正常。当我重新启动 Windows 10 时,问题就开始了。
CFG:
config.vm.define "machine" do |machine|
machine.vm.box = "master"
machine.vm.hostname = "machine"
machine.vm.box_check_update = false
machine.vm.network :forwarded_port, guest: 22, host: 2222, disabled: true
machine.vm.network :forwarded_port, guest: 22, host: 2171
LOG2:
==> machine: Booting VM...
==> machine: Waiting for machine to boot. This may take a few minutes...
machine: SSH address: 127.0.0.1:22
machine: SSH username: vagrant
machine: SSH auth method: private key
==> machine: Forcing shutdown of VM...
==> machine: Destroying VM and associated drives...
/opt/vagrant/embedded/lib/ruby/2.4.0/socket.rb:1198:in `__connect_nonblock': Operation already in progress - connect(2) for 127.0.0.1:22 (Errno::EALREADY)
from /opt/vagrant/embedded/lib/ruby/2.4.0/socket.rb:1198:in `connect_nonblock'
from /opt/vagrant/embedded/lib/ruby/2.4.0/socket.rb:56:in `connect_internal'
from /opt/vagrant/embedded/lib/ruby/2.4.0/socket.rb:137:in `connect'
from /opt/vagrant/embedded/lib/ruby/2.4.0/socket.rb:627:in `block in tcp'
解决方案
当我在我的 Vagrant 机器上遇到同样的问题时,该解决方案对我有用。
原因是 Hyper-V 接管了这些端口,为了防止它发生,请执行以下操作:
dism.exe /Online /Disable-Feature:Microsoft-Hyper-V
禁用 hyper-v(这将需要重新启动几次)netsh int ipv4 add excludedportrange protocol=tcp startport=2171 numberofports=1
netsh int ipv4 add excludedportrange protocol=tcp startport=2171 numberofports=1
当你完成所有必需的重启后,保留你想要的端口,这样 hyper-v 就不会保留它
可选:完成以下命令后,您可以重新激活 Hyper-V:
dism.exe /Online /Enable-Feature:Microsoft-Hyper-V /All
在你相应地完成所有这些步骤之后,问题应该得到解决,对我来说,这些东西真的很有帮助。
这个链接有助于理解发生了什么。