2015-08-31 62 views
1

我已經爲Apache Airavata創建了兩個碼頭集裝箱。假設它們是容器A和容器B.容器B依賴於容器A.啓動容器A後,我必須將A的IP地址作爲環境變量提供給容器B.現在,容器B的啓動腳本將對配置文件進行更改對於容器B.在此更改後,容器B可以與容器A進行通信。碼頭集裝箱如何在Mesos/Marathon設置中進行通信

當我在本地docker環境中進行設置時,手動創建了容器並在容器創建期間傳遞了所需的值。

docker run -i -d --name pga --env SERVER_HOST=172.17.1.84 --env SERVER_PORT=8930 -p 8787:80 -t pga:test 

在Mesos/marathon環境中,可以在任何Mesos從站系統中創建docker。現在我怎麼能讓容器之間發生溝通? 我使用馬拉松框架啓動docker作業。

回答

1

您描述的問題可以通過使用服務發現機制(如Mesos DNSMarathon Event Bus)與一些自定義工具(即由您開發的腳本)結合使用來解決。基本上,您需要編寫一個在容器B內運行的腳本,並使用服務發現來查找容器A的IP地址,修改配置文件並可能重新啓動該服務。

1

我建議您嘗試consul進行服務發現。此外,由於您使用Mesos/Marathon,因此可能會嘗試使用Apollo,這也是基於領事。