2017-05-18 150 views
0

在我的Linux網絡中,我無法通過專用的macvlan網絡從運行它的主機到達我的碼頭容器。來自這個macvlan網絡的所有其他連接都很好。無法通過macvlan網絡從主機訪問碼頭容器

所以基本上設置是:

DOCKER1  eth0 172.0.0.1 (default) 
    |   eth1 10.0.0.1 (macvlan) 
    CONTAINER1  10.0.0.11 (macvlan) 

DOCKER2  eth0 172.0.0.2 (default) 
    |   eth1 10.0.0.2 (macvlan) 
    CONTAINER2  10.0.0.12 (macvlan) 
  • 主機DOCKER1不能達到CONTAINER1
  • 主機DOCKER2不能達到container2的
  • 主機DOCKER1可以達到DOCKER2
  • 主機DOCKER1可以達到container2的
  • 主機DOCKER2可以到達DOCKER1
  • 主機DOCKER2可以達到CONTAINER1
  • 所有的容器可以在物理網絡中達到相互
  • 所有其他設備可以到達所有
  • 所有能到達網關/互聯網

我怎樣才能使主機通過macvlan網絡到達它自己的容器?

我需要特定的應用程序通過此網絡進行交互,因此使用docker exec不會解決我的問題;)。

回答

0

如果沒有外部交換機的特殊支持,主機無法與本地macvlan設備進行通信。見例如this Red Hat documentation其中討論的虛擬機使用macvlan設備:

然而,當客戶虛擬機被配置爲使用一個類型=諸如macvtap「直接」網絡接口,儘管具有與其他客人進行通信的能力和網絡上的其他外部主機,訪客不能與自己的主機通信。

這種情況其實不是一個錯誤 - 它是macvtap的定義行爲。由於主機的物理以太網連接到macvtap網橋的方式,從轉發到物理接口的guest虛擬機進入該網橋的流量無法反彈回主機的IP堆棧。此外,發送到物理接口的來自主機IP堆棧的流量不能反彈回macvtap網橋以轉發給guest虛擬機。

相關問題