2016-01-22 139 views
0

我開始使用Docker進行基於容器的archictectures,我懷疑這可能是無稽之談。鏈接在不同主機上運行的Docker容器?

鏈接在不同主機上運行的Docker容器是否有意義?

假設我們有兩個容器:

  1. barDatabase
  2. fooService

如果兩者在同一臺主機,我們將鏈接barDatabasefooService捐贈,這樣一來,一個主機名他們之間的溝通。

但是,如果他們在不同的機器上運行:

  1. barDatabase - >machine1.company.local
  2. fooService - >machine2.company.local

會還需要鏈接呢?我們不能使用原始主機名而無需鏈接它們嗎?

謝謝。

回答

1

是和否。較新版本的Docker具有docker網絡 - 這需要一些額外的配置,例如 - etcd來管理配置。

這樣做,則可以:

docker network create sometnetname 
docker run -d --net somenetname --name barDatabase yourimage 

還有你的另一臺主機上:

docker run -d -p 8080:8080 --net somenetname --name fooService service_image 

然後,您就可以「平」 barDatabase,如果它是一個主機名,來自fooService。而fooService將連接到外部網絡,並充當網關。

這適用於我的1.9.1碼頭,而不是我的1.8.2 - 在centos上。 (所以我會認爲它是1.9+的功能,但我找不到直接來源)。

更多細節: https://docs.docker.com/engine/userguide/networking/get-started-overlay/

需要多一點的faff成立,但因爲你必須配置ETCD(或其他鍵值存儲)

我一直在使用這把一個私有網絡上的多節點elasticsearch實例,我假設它與您的用例類似。 (3臺主機上的3個節點,logstash進入,kibana充當網關,以及一個nginx管理代理,進行一些安全/重寫)

1

在這種情況下,您必須公開要從machine1中的數據庫容器訪問的端口,然後在機器2中,您可以像預期的那樣指向顯示端口上的machine1。沒有必要(和AFAIK無法)直接連接來自不同機器的容器。

相關問題