我设置了一个实验环境,使用vagrant进行搭建。它由3台机器组成,两台应用服务器安装了docker 1.4.1,一台数据库服务器安装了postgres 9.3。所有机器都运行在Centos 6.6操作系统上。
该环境是使用host-only私有网络进行设置的。以下是vagrant文件:
我发现当我在app1或app2的容器中时,无法访问数据库服务器。我认为问题是vagrant/virtualbox的主机专用私有网络使用127.0.0.x范围内的地址。在主机上,vagrant配置环回接口以处理发送到网络上每台机器的请求。但是在容器中,由于此接口未配置,容器将所有127.0.0.x请求都视为本地主机的请求,并将它们发送回自己。
是否有任何替代配置可以在vagrant侧或docker侧设置,以缓解这个问题?简而言之,我想要一个vagrant环境,在我的应用程序服务器上的容器可以与数据库服务器通信。请注意,db直接安装在db-host上,而不是在docker容器中运行。此外,这意味着要模仿一个生产环境,该环境不使用vagrant,因此我希望任何docker更改也能在更正常的网络环境中工作。
该环境是使用host-only私有网络进行设置的。以下是vagrant文件:
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的主机专用私有网络使用127.0.0.x范围内的地址。在主机上,vagrant配置环回接口以处理发送到网络上每台机器的请求。但是在容器中,由于此接口未配置,容器将所有127.0.0.x请求都视为本地主机的请求,并将它们发送回自己。
是否有任何替代配置可以在vagrant侧或docker侧设置,以缓解这个问题?简而言之,我想要一个vagrant环境,在我的应用程序服务器上的容器可以与数据库服务器通信。请注意,db直接安装在db-host上,而不是在docker容器中运行。此外,这意味着要模仿一个生产环境,该环境不使用vagrant,因此我希望任何docker更改也能在更正常的网络环境中工作。