首页 > 解决方案 > 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'

标签: rubyvagrantvagrantfile

解决方案


当我在我的 Vagrant 机器上遇到同样的问题时,该解决方案对我有用。

原因是 Hyper-V 接管了这些端口,为了防止它发生,请执行以下操作:

  1. dism.exe /Online /Disable-Feature:Microsoft-Hyper-V禁用 hyper-v(这将需要重新启动几次)
  2. 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

在你相应地完成所有这些步骤之后,问题应该得到解决,对我来说,这些东西真的很有帮助。

这个链接有助于理解发生了什么。


推荐阅读