我有流浪者 1.2.2安装在我的开发机器上;一台笔记本电脑。我在三个不同的环境中使用同一台笔记本电脑,使用不同的网络设置。
我的 VagrantFile 如下所示:
Vagrant.configure("2") do |config|
config.vm.box = "lucid32"
config.vm.network :forwarded_port, guest: 80, host: 88
config.vm.network :forwarded_port, guest: 56789, host: 56789
config.vm.network :public_network, :bridge => 'Intel(R) 82579V Gigabit Network Connection'
config.vm.hostname = "web"
end
它成功地将主机名设置为web
无头 Ubuntu 中的主机名。
但是当我尝试web
从主机操作系统(Windows) ping 时,它无法解析 IP 地址。
由于当我搬到其他办公室时 C 类子网掩码和 IP 范围会有所不同,因此我无法每次都更改 Windows 中的 hosts 文件。
有没有办法通过主机名从主机访问客户机web
?
答案1
为什么不指定主机可以用来连接虚拟机的专用网络?
http://docs.vagrantup.com/v2/networking/private_network.html
无论您去哪里,私有 IP 都将保持不变。然后您可以为该私有 IP 添加主机条目。
答案2
根据 Andy 的建议,我创建了一个具有静态 IP 地址的私有网络。然后在 Windows 主机中,我使用该 IP 地址配置了主机名。这样,我就可以从本地/主机操作系统访问 Web 服务器了。
现在,在 VagrantFile 中,由于我的主机端口 88 被转发到客户的 80( config.vm.network :forwarded_port, guest: 80, host: 88
),我可以使用以下命令从本地 LAN 计算机访问 Web 服务器:http://host-computer-name:88/
。
答案3
要从任何其他计算机访问“web”,您需要在 LAN 上的 DNS 服务器中添加 DNS 条目。
但是,从您所描述的情况来看,这可能会出现问题,因为每次笔记本电脑获得新的 IP 地址时,您都需要更新 DNS 条目。
如果您偶尔想与网络上的其他几个人共享此虚拟机,那么每次更改 IP 地址时,您都应该告诉他们。
如果很多人会访问虚拟机,或者您的 IP 经常更改,那么您应该将虚拟机从笔记本电脑移到专用服务器上,或者获取 ec2 实例。
Vagrant 非常适合在您自己的工作站上启动虚拟机,但不适合与其他人共享虚拟机。