簡體   English   中英

在docker容器中訪問vagrant / virtual box上的其他計算機僅托管網絡

[英]Accessing other machines on a vagrant/virtual box host only network from within a docker container

我有一個使用vagrant設置的實驗室環境。 它由3台機器,兩台安裝了docker 1.4.1的應用服務器和一台安裝了postgres 9.3的數據庫服務器組成。 所有機器都運行Centos 6.6。

使用僅主機專用網絡設置環境。 這是流浪文件

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請求視為對localhost的請求,並將它們發送回自身。

是否有任何替代配置我可以設置在流浪者方面,或者碼頭方可以緩解這個問題? 簡而言之,我希望有一個流浪的環境,我的應用服務器上的容器可以與數據庫服務器通信。 請注意,db直接安裝在db-host上,而不是在docker容器中運行。 此外,這是為了模仿不使用vagrant的生產環境,所以我希望任何docker更改也能在更正常的網絡方案中工作。

默認情況下,VirtualBox專用網絡僅限主機,因此一個VM無法看到另一個VM。 您可以通過使用virtualbox__intnet設置將此更改為使用VirtualBox內部網絡,因此您需要像host.vm.network "private_network", ip: ip, virtualbox__intnet: true

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

請注意,這是特定於VirtualBox的。 如果這也需要與不同的提供商合作,我認為您將需要使用公共網絡以獲得必要的橋接並考慮到確保這一點的所有相關問題。 請參見http://docs.vagrantup.com/v2/networking/public_network.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM