Vagrant 重新加载后正在使用的流浪端口报告

Vagrant 重新加载后正在使用的流浪端口报告,vagrant,vagrantfile,vagrant-windows,Vagrant,Vagrantfile,Vagrant Windows,我有一些流浪的虚拟机(在Mac和windows上,都运行linux)。我在Vagrant文件中定义了如下端口转发: config.vm.network "forwarded_port", guest: 80, host: 9007 我第一次做了一个流浪者行动,效果很好。但是,当我执行vagrant-reload或vagrant-halt然后执行vagrant-up时,我会收到以下消息: Vagrant cannot forward the specified ports on this V

我有一些流浪的虚拟机(在Mac和windows上,都运行linux)。我在Vagrant文件中定义了如下端口转发:

  config.vm.network "forwarded_port", guest: 80, host: 9007
我第一次做了一个流浪者行动,效果很好。但是,当我执行
vagrant-reload
vagrant-halt
然后执行
vagrant-up
时,我会收到以下消息:

Vagrant cannot forward the specified ports on this VM, since they
would collide with some other application that is already listening
on these ports. The forwarded port to 9007 is already in use
on the host machine.

To fix this, modify your current project's Vagrantfile to use another
port. Example, where '1234' would be replaced by a unique host port:

  config.vm.network :forwarded_port, guest: 80, host: 1234

Sometimes, Vagrant will attempt to auto-correct this for you. In this
case, Vagrant was unable to. This is usually because the guest machine
is in a state which doesn't allow modifying port forwarding. You could
try 'vagrant reload' (equivalent of running a halt followed by an up)
so vagrant can attempt to auto-correct this upon booting. Be warned
that any unsaved work might be lost.
然后我必须更改端口以启动VM,这是一个痛苦的过程。我已经与netstat和lsof进行了检查,似乎没有任何东西在使用该端口。我认为这可能是一个时间问题,过了一段时间我就可以使用这个端口了,但即使等了好几个小时,我仍然会出错


这在Mac和Windows环境中都会发生。是否有一些设置允许我重用端口?

我通常使用静态IP来避免端口转发问题。Vagrant有一个
auto_correct
功能来帮助解决这个问题

在不知不觉中运行多台流浪机器时,这是很常见的 创建相互冲突的转发端口定义(两个) 例如,将单独的流浪者项目转发到8080端口)。 Vagrant包括内置的检测和纠正机制, 自动地

端口冲突检测始终完成。流浪汉不会允许你这么做的 定义一个转发端口,主机上的端口显示为 接受流量或连接

必须为每个端口手动启用端口冲突自动更正 转发端口,因为它发生时通常令人惊讶,并且可以 引导流浪用户认为端口不正确 转发。启用自动更正很容易:

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 80, host: 8080,
    auto_correct: true
end
最后一个
:auto_correct
参数设置为true时,会将Vagrant告知auto 纠正任何碰撞。在流浪者上升或流浪者重新装载期间,流浪者 将输出有关任何碰撞检测和自动检测的信息 进行了更正,因此您可以注意并采取相应的行动


我通常使用静态IP来避免端口转发问题。Vagrant有一个
auto_correct
功能来帮助解决这个问题

在不知不觉中运行多台流浪机器时,这是很常见的 创建相互冲突的转发端口定义(两个) 例如,将单独的流浪者项目转发到8080端口)。 Vagrant包括内置的检测和纠正机制, 自动地

端口冲突检测始终完成。流浪汉不会允许你这么做的 定义一个转发端口,主机上的端口显示为 接受流量或连接

必须为每个端口手动启用端口冲突自动更正 转发端口,因为它发生时通常令人惊讶,并且可以 引导流浪用户认为端口不正确 转发。启用自动更正很容易:

Vagrant.configure("2") do |config|
  config.vm.network "forwarded_port", guest: 80, host: 8080,
    auto_correct: true
end
最后一个
:auto_correct
参数设置为true时,会将Vagrant告知auto 纠正任何碰撞。在流浪者上升或流浪者重新装载期间,流浪者 将输出有关任何碰撞检测和自动检测的信息 进行了更正,因此您可以注意并采取相应的行动


使用静态IP如何对此有所帮助?没有实际的端口冲突。我只运行一个虚拟机,它运行良好。然后我对它执行了一个
vagrant-reload
,然后它说它刚刚使用的端口发生了端口冲突。主机上的端口似乎没有关闭,或者其他什么。静态IP有帮助,因为当您从虚拟机的IP直接访问虚拟机上运行的服务器时,不需要从虚拟机转发端口,所以您可以从虚拟机访问任何端口,而无需指定转发选项。好的,很高兴知道。但是我想弄清楚为什么在没有端口冲突的情况下会发生端口冲突。使用静态IP如何帮助解决这个问题?没有实际的端口冲突。我只运行一个虚拟机,它运行良好。然后我对它执行了一个
vagrant-reload
,然后它说它刚刚使用的端口发生了端口冲突。主机上的端口似乎没有关闭,或者其他什么。静态IP有帮助,因为当您从虚拟机的IP直接访问虚拟机上运行的服务器时,不需要从虚拟机转发端口,所以您可以从虚拟机访问任何端口,而无需指定转发选项。好的,很高兴知道。但我想弄明白为什么没有港口碰撞时会发生港口碰撞。