2017-08-02 63 views
2

我正在學習"docker with macvlan"。下面是我的設置:我的docker的macvlan設置有什麼問題?

G 192.168.1.1,網關(物理)
W 192.168.1.2,窗口10,醚網卡(物理)
V 192.168.1.5,VirtualBox的+ centos7,橋接網絡
c1 192.168.1.10,在macnet
c2 192.168.1.11搬運工容器,在macnet

macnet搬運工容器由
創建docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=enp0s3 macnet

c1c2
docker run -it --net=macnet --ip=192.168.1.10 -h=c1 anapsix/alpine-java bash
docker run -it --net=macnet --ip=192.168.1.11 -h=c2 anapsix/alpine-java bash

泊塢窗版本創建的是17.06.0策

我期待下面的所有工作,但只有第一個作品(->意味着ping):
c1 < - >c2 OK
c1 < - >V失敗
c1 < - >W失敗
c1 - >G失敗

這有什麼錯上面的步驟?

順便說一句,有人可以幫助創建標籤「macvlan」和「ipvlan」?

回答

0

我的設置和你一樣。我的意思是一個VBox和兩個運行在Ubuntu之上的容器。我不知道你是否有特定的目的,或者只是測試碼頭網絡。如果是後者,那麼爲什麼不使用橋號作爲驅動程序。 下面命令創建的網絡對我來說:

docker network create -d bridge -o parent=enp0s3 skynet 

然後我創建了兩個集裝箱出來。

~$ docker run -itd --net=skynet --name container2 myimage bash 
~$ docker run -itd --net=skynet --name container1 myimage bash 

並檢查兩個容器可以互相ping通以及本地主機和外部網絡(如google.com或yahoo.com)。

讓我知道這是否有幫助。

N.B:對於您的查詢,您的設置沒有任何問題。如果驅動程序是macvlan,則預計您無法觸及容器。

+0

'syknet'與默認網絡相同,但我期待的是類似virtualbox的橋接網絡。在這種情況下,不需要端口映射或看起來像單個主機。 – Leon

2

這是一個預期的行爲,因爲您使用macvlan創建的網絡在您的VM和macvlan網橋之間沒有任何連接(缺省情況下,網橋模式下爲docker create macvlan network)。您創建C1和C2的容器將其接口連接到macvlan橋。這就是爲什麼C1和C2能夠互相ping通的原因,但是從VM(guest)開始,您無法ping C1和C2,因此無法ping主機。

從虛擬機連接到容器C1和C2,創建一個橋接類型的接口並分配一個IP。命令可能有副作用,如果你通過ssh連接,確保你有2個接口連接你的虛擬機,ssh連接到虛擬機,而不是通過網絡192.168.1.0/中的ip接口24)在網絡具有IP接口的

  1. 刪除IP 192.168.1.0/24
  2. IP地址刪除(ip_of_interface)DEV(接口例如-的eth0)
  3. IP鏈路添加mymacvlan1鏈路(VM接口名稱例如。 - eth0)type macvlan mode bridge
  4. ip link set mymacvlan1 up
  5. ip addr添加192.168.1.20/24開發mymacvlan1
  6. 平的容器 - 平(C1 IP)-I mymacvlan1

請注意這些更改不會永久啓動

能夠從主機ping通,您需要確保虛擬機VM網絡設置中的虛擬機接口具有混雜模式。