2016-04-06 51 views
0

我有兩個docker容器 - 一個運行監控應用程序,另一個運行服務,兩者都在與net = host相同的網絡名稱空間中運行。 (Mesos使用此參數運行所有作業。)在Docker容器中進程使用的查詢端口號

該服務可以綁定到一個隨機端口。 如何從監視容器中查詢哪個端口將服務綁定到自己?

我試過閱讀/ proc/net/tcp,但這似乎很複雜。有沒有更簡單的方法來做到這一點?

+0

'搬運工檢查container_id' –

+0

我不知道提前容器ID。我已經將docker socket安裝在監控容器中,並且可以使用docker API來查詢它們。我試圖查詢暴露的端口號,但是我只能得到端口號暴露的容器不能與net = host一起運行。 – krish7919

+0

你能否澄清你在哪個環境?在我看來,你使用的是一個Mesos集羣?如果是這樣,請不要按照下面的建議使用鏈接。 –

回答

1

所以,如果我理解正確的話,該服務綁定到隨機端口?如果是這樣,爲什麼是這樣呢?我想這遠非理想,我在容器中使用bin時將特定端口用於所有服務。例如,如果您有一個應用程序(通過Marathon啓動)綁定到通過環境變量定義的端口,則可以在啓動容器時設置此環境變量,並使用BRIDGED聯網模式讓Mesos選擇一個港口範圍內的港口。

如果您安裝了Mesos DNS,則可以使用它從應用程序名稱中確定IP /端口組合。例如。如果Marathon應用程序名稱爲testapp,則服務名稱將爲testapp.marathon.mesos

+0

我不能選擇橋接模式作爲mesos強制主機聯網模式。我重新設計了我的應用程序以使用隨機端口,以便我可以在同一臺計算機上運行多個服務實例。現在服務發現失敗了,因爲這一點,因爲無法事先知道服務綁定到什麼端口,在主機聯網模式下。我試圖找到一個解決方案,使用極光截至目前,當我相信極光無法處理它,我會探索更多。任何建議都非常受歡迎。 :) – krish7919

+1

不幸的是,我對奧羅拉一無所知。我們將使用Marathon的CoreOS集羣用作調度程序,並將所有應用程序作爲Docker容器運行。橋接網絡適合我們。你爲什麼看到只有主機網絡才能工作?這是Aurora的問題嗎? – Tobi

+0

「請注意,我們當前在運行Docker鏡像時默認爲託管網絡,以便更容易地支持將Docker鏡像作爲Executor運行。」 來自:http://mesos.apache.org/documentation/latest/docker-containerizer/ 我很驚訝,馬拉松+ mesos是如何橋接網絡和極光+ mesos不。在極光中運行碼頭集裝箱時,是否給出了--net =橋接? – krish7919

相關問題