在stream浪者/虚拟箱上访问其他机器仅在托pipe容器内的networking上

我有一个实验室环境,我已经设置使用stream浪汉。 它由3台机器,两台安装了docker 1.4.1的应用服务器和一台安装了postgres 9.3的数据库服务器组成。 所有机器都运行Centos 6.6。

环境使用仅主机的专用networking进行设置。 这是stream浪者档案

Vagrant.configure('2') do |config| config.vm.box = "centos-6.0-updated" { 'db' => '10.17.33.10', 'app1' => '10.17.33.11', 'app2' => '10.17.33.12', }.each do |short_name, ip| config.vm.define short_name do |host| host.vm.network 'private_network', ip: ip host.vm.hostname = "#{short_name}.my.dev" end end end 

我发现当我在app1或app2上的容器内时,我无法访问数据库服务器。 我相信问题是vagrant / virtualbox的主机专用networking使用127.0.0.x范围内的地址。 在主机上,stream浪者configuration回送接口来处理向networking上的每台机器发送请求。 但是在容器中,因为这个接口没有configuration,所以容器把所有的127.0.0.x请求作为localhost的请求处理,并把它们发回给自己。

有没有其他的configuration可以在stream浪方面设置,或者docker方面可以缓解这个问题? 总之,我想有一个stream浪的环境,我的应用程序服务器上的容器可以与数据库服务器交谈。 请注意,db直接安装在db主机上,不在docker容器内运行。 此外,这意味着模仿不会使用stream浪者的生产环境,所以我希望任何docker更改也能在更普通的networking场景中工作。

默认情况下,VirtualBox专用networking只有主机,所以一台虚拟机看不到另一台虚拟机。 你可以改变它来使用VirtualBox的内部networking,使用virtualbox__intnet设置,所以你需要一个像host.vm.network "private_network", ip: ip, virtualbox__intnet: true

这里有更多的信息http://docs.vagrantup.com/v2/virtualbox/networking.html

请注意,这是VirtualBox特定的。 如果这需要与不同的提供商合作,我认为您需要使用公共networking来获得必要的桥接,并考虑到所有相关的问题。 请参阅http://docs.vagrantup.com/v2/networking/public_network.html