我想知道如何在我的vagrant虚拟机上使用终端运行命令:
$ ping localhost:3000
或者
$ curl http://localhost:3000
在主机(OSX)上,我有一个运行在localhost:3000的rails服务器,所以我期望在rails日志中看到一些内容。
我想知道如何在我的vagrant虚拟机上使用终端运行命令:
$ ping localhost:3000
或者
$ curl http://localhost:3000
在主机(OSX)上,我有一个运行在localhost:3000的rails服务器,所以我期望在rails日志中看到一些内容。
当我在虚拟机中运行时:
$ ip route show
输出中会有一行类似于:
default via 10.0.2.2 dev enp0s3 proto static metric 1024
那就是从客户端ping的IP地址:
curl http://10.0.2.2:3000
在vagrant虚拟机中,localhost
指的是客户端vagrant虚拟机,即localhost
并不指代主机。从客户端访问主机的一种方式是配置私有网络。您可以为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
的连接。
您还可以在虚拟机的配置文件中将网络设置为“public_network”。
在Vagrantfile
中,只需取消注释该行:
config.vm.network "public_network"
重新启动机器:
vagrant halt
vagrant up
执行 ip addr show
命令,公共网络上的 IP 地址将列在 eth1
下(而不是通常的 eth0
下)
config.vm.network "private_network", ip: "192.168.50.1"
- tobuslievencurl: (7) Failed connect to 192.168.33.1:3000; No route to host
。 - Emba Moussa192.168.50.4
还是192.168.33.4
?请提供您正在使用的Vagrantfile的确切行。此外,您应该检查您的防火墙设置。 - taskinoorconfig.vm.network "private_network", ip: "192.168.33.64"
可能与防火墙设置有关。 - Emba Moussa$ ping 192.168.33.64
如果你可以从主机ping通客户端,但反过来不行,那么这可能是由于防火墙设置引起的。你可以暂时禁用防火墙,然后检查它是否正常工作。 - taskinoor