我想要做的是同时运行2个或更多的流浪盒。现在我遇到的问题是我收到警告"转发到2222的端口已经在使用中 在主机"。这是奇怪的,因为我没有在puPHPet设置期间将任何Vagrant盒子设置为2222端口。
以下是我的2个config.yaml文件中的相关部分:
vagrantfile-local:
vm:
box: puphpet/ubuntu1404-x64
box_url: puphpet/ubuntu1404-x64
hostname: ''
memory: '1024'
cpus: '1'
chosen_provider: virtualbox
network:
private_network: 192.168.56.101
forwarded_port:
dL5if56LAPQo:
host: '6645'
guest: '22'
和
---
vagrantfile-local:
vm:
box: puphpet/ubuntu1404-x64
box_url: puphpet/ubuntu1404-x64
hostname: ''
memory: '1024'
cpus: '1'
chosen_provider: virtualbox
network:
private_network: 192.168.56.102
forwarded_port:
dL5if56LAPQo:
host: '6646'
guest: '22'
我猜测它是我的错,但我没有看到任何地方分配的端口2222(可能是它的默认设置)。
答案 0 :(得分:0)
这有点像作弊,并没有解决核心问题,但它对我来说已经足够了。我为解决问题所做的是更改puPHPet生成的Vagrant文件。我将转发的端口行更改为:
data['vm']['network']['forwarded_port'].each do |i, port|
if port['guest'] != '' && port['host'] != ''
config.vm.network :forwarded_port, guest: port['guest'].to_i, host: port['host'].to_i, auto_correct: true
end
end
我添加了“,auto_correct:true”。这就是Vagrant文档中关于auto_correct的说法:
端口冲突和纠正
在运行多个Vagrant计算机时,通常会在不知不觉中创建相互冲突的转发端口定义(例如,两个单独的Vagrant项目转发到端口8080)。 Vagrant包含内置机制来自动检测并纠正它。
始终进行端口碰撞检测。 Vagrant不允许您定义转发端口,主机上的端口似乎接受流量或连接。
必须为每个转发端口手动启用端口冲突自动更正,因为它发生时通常会令人惊讶,并且可能导致Vagrant用户认为端口未正确转发。启用自动更正非常简单:
Vagrant.configure("2") do |config|
config.vm.network "forwarded_port", guest: 80, host: 8080,
auto_correct: true
end
最终:auto_correct参数设置为true告诉Vagrant自动更正任何冲突。在流浪汉或流浪汉重新加载期间,Vagrant将输出有关任何碰撞检测和自动更正的信息,因此您可以注意并采取相应行动。
我无法更好地解释它:)