从来宾到主机的 Vagrant ping 或 curl

Vagrant ping or curl from guest to host machine

我想知道如何使用终端从我的流浪机器 运行 命令:

$ ping localhost:3000

$ curl http://localhost:3000

在主机 (OSX) 中,我在 localhost:3000 中有一个 rails 服务器 运行,所以我希望在 rails 中显示一些内容日志。

vagrant machine里面localhost指的是guest vagrant machine,即localhost不是host machine。从来宾访问主机的一种方法是配置 private network。你可以为vagrant指定一个静态私有IP,像这样:

Vagrant.configure("2") do |config|
  config.vm.network "private_network", ip: "192.168.50.4"
end

在可以通过 192.168.50.4 从主机访问此来宾并且可以通过 192.168.50.1 从来宾访问主机之后,即主机 IP 的结束八进制将在来宾机器中 1

vagrant up 之后,您可以从来宾机器内部执行此操作:

$ ping 192.168.50.1
$ curl http://192.168.50.1:3000

请注意,如果您有一些严格的防火墙设置,那么您必须允许来自 192.168.50.4 的连接。

当我 运行 在 VM 中时:

$ ip route show

在输出中有这样一行:

default via 10.0.2.2 dev enp0s3 proto static metric 1024

这是要从访客 ping 的 IP:

curl http://10.0.2.2:3000

您还可以在来宾计算机的配置文件中将网络设置为“public_network”。

Vageantfile 中取消注释行:

config.vm.network "public_network"

重启机器:

vagrant halt
vagrant up

执行 ip addr show 并且您在 public 网络上的 ip 是 eth1 下列出的那个(而不是通常的 eth0