2014-10-09 47 views
3

我在主PC中安裝了4個NIC。我想啓動不同的碼頭的容器,並將不同的物理網卡綁定到每個容器。我該怎麼做碼頭工? 對於VirtualBox,可以通過爲物理網卡的每個虛擬機創建網橋適配器來完成此操作。將物理NIC綁定到Docker的容器

回答

3

當您在Docker上使用-P-p選項公開端口時,它只是創建一個iptables目標NAT或DNAT條目。您甚至可以通過運行下面的命令來查看這些條目。

iptables -t nat -nL 
...  
Chain DOCKER (2 references) 
target  prot opt source    destination 
DNAT  tcp -- 0.0.0.0/0   0.0.0.0/0  tcp dpt:8001 to:172.17.0.19:80 
DNAT  tcp -- 0.0.0.0/0   0.0.0.0/0  tcp dpt:8002 to:172.17.0.20:80 

默認搬運工將使用0.0.0.0/0(即所有接口)規範來轉發端口太並從搬運工容器主機。但是,您可以替換這些規則以僅從選定的接口轉發。

所以說我有兩個網絡服務器都希望聽取端口80.我會運行它們如下。請注意,我沒有公開任何端口。這樣只有我們創建的IP Tables規則才允許訪問這些節點。

docker run --name web1 -t something/web-server 
docker run --name web2 -t something/web-server 

潤泊塢窗檢查,以獲得容器的虛擬IP

docker inspect web1 | grep IPAddress 
IPAddress": "172.17.0.19", 
docker inspect web2 | grep IPAddress 
IPAddress": "172.17.0.20", 

現在DNAT規則添加了特定的接口:

iptables -t nat -A DOCKER -p tcp -d [INTERFACE_1_IP] --dport 80 -j DNAT --to-destination 172.17.0.19:80 
iptables -t nat -A DOCKER -p tcp -d [INTERFACE_2_IP] --dport 80 -j DNAT --to-destination 172.17.0.20:80 
+0

通過電流搬運工文檔沖刷後發現這一點。希望我在幾小時前得到了這個直接答案。 – NickAbbey 2016-11-01 01:23:07