【问题标题】:What is the simplest way to get vagrant/virtualbox to access host services?让 vagrant/virtualbox 访问主机服务的最简单方法是什么?
【发布时间】:2020-04-07 17:46:47
【问题描述】:

我已经阅读了许多示例(包括此处以及各种博客和 virtualbox/vagrant 文档),此时我认为我应该能够做到这一点。

我最终想做的是与我的主机上的 docker 守护进程以及我任意启动的所有后续服务进行通信。

为了让它工作,我在我的主机上运行简单的 nginx 容器并确认它工作:

$ docker run --name some-nginx -d -p 8080:80 docker.io/library/nginx:1.17.9
$ curl localhost:8080
> Welcome to nginx!

在我的 Vagrantfile 中,我定义了我的主机专用网络:

config.vm.network "private_network", ip: "192.168.50.4",
  virtualbox__intnet: true

现在在我的访客 vagrant box 中,我希望我应该能够访问同一个端口:

$ curl localhost:8080
> curl: (7) Failed to connect to localhost port 8080: Connection refused

$ curl 127.0.0.1:8080
> curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused

$ curl 192.168.50.4:8080 # I hope not, but maybe this will work?
> curl: (7) Failed to connect to 192.168.50.4 port 8080: Connection refused

【问题讨论】:

    标签: virtualbox vagrantfile virtual-network


    【解决方案1】:

    如果您在 Vagrant 客户机“内部”,则 localhost 将是该机器的本地环回适配器,而不是您主机的本地环回适配器。

    在您使用的 VirtualBox 虚拟化中,您始终可以通过10.0.2.2 地址连接到在您的主机本地主机上运行的服务。见:https://www.virtualbox.org/manual/ch06.html#network_nat

    因此,在您的情况下,Web 服务器在您主机上的端口 8080 上运行,使用

    curl 10.0.2.2:8080
    

    意味着成功

    【讨论】:

      猜你喜欢
      • 2016-07-02
      • 1970-01-01
      • 2012-05-08
      • 2010-10-20
      • 2016-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多