2015-02-06 109 views
7

經過仔細研究,測試和擺弄之後,我只能通過從IP轉發來找到將Docker容器連接到給定接口的方法/港口。這可以通過將-p Host-IP:Host-Port:Container-Port添加到docker run命令來完成。將Docker容器連接到網絡接口/設備而不是IP地址

我有一個應用程序,偵聽UDP廣播(255.255.255.255),並且一直無法配置轉發的方式,使得我的容器將接收這些廣播而不轉發我關心的端口上的所有網絡通信(無通過它來的接口),即:-p Host-Port:Container-Port

可以使用--net=host配置容器,只需編寫我的代碼以綁定到我已完成並測試的給定接口,但仍然違背容器的主要思想。目標是讓同一應用程序的多個容器在不同的網絡接口上進行監聽(如設備中的地址)。

有關我如何做到這一點的任何想法?

編輯#1:在考慮了這一點之後,有可能在所需的接口上設置網橋就足夠了,但我不相信操作系統通過它發送廣播數據包。隨着我執行更多測試,請繼續關注。

編輯#2:數據包通過橋發送就好了。但是,網橋被配置爲Docker默認網橋。我一直無法弄清楚如何在不同的網橋上運行容器。看了一些筆記,指向將網絡設置爲--net=none並通過lxc容器設置自行配置它。

+0

爲什麼泊塢窗橋不夠好? – 2015-02-22 02:28:34

+0

無法以我可以指定要連接的網絡接口的方式配置泊塢橋。這意味着我無法爲每個網絡接口分開容器。 – tryexceptpass 2015-02-23 16:09:57

+1

你可以發佈你的解決方案嗎?我需要類似的東西在Docker容器內部運行DHCP實例 – 2015-12-21 21:13:51

回答

-1

默認情況下,docker run命令會爲tcp發佈端口。 嘗試指定使用UDP:

docker run -p Host-Port:Container-Port/UDB ...

+1

問題不在於轉發端口,它是從特定接口轉發數據。 – tryexceptpass 2015-03-14 18:45:34

+0

你想轉發什麼接口? – 2015-03-16 10:12:59

+1

在這種情況下,我使用「接口」一詞來表示網絡設備。 如果我有一個雙宿主系統,我只想在其中一個網絡上提供服務,我還沒有找到辦法做到這一點。在我使用廣播或多播數據包的情況下,從特定IP轉發數據是不夠的。 – tryexceptpass 2015-03-19 23:02:07

相關問題