Docker的網路-macvlan 參考文章: https://godleon.github.io/blog/Docker/docker-network-macvlan/ https://docs.docker.com/network/drivers/macvlan/ https://wiki.archlinux.org/title/VLAN 接下來將嘗試使用macvlan,這個linux才能使用的docker network模式。 目前文章都說明macvlan是效能比較好的一種網路模式,且支援四種模式,分別為: * bridge * vepa * passthru * private 實際操作後,發現這個功能相當依賴Linux的網路架構。 因為我的Linux環境是Archlinux,所以使用Archlinux的作法說明如下: 實驗目標:建立macvlan的bridge mode的network物件,然後讓兩個容器可以互通 1. 先新增一張macvlan虛擬網卡 > ip link add link wlan0 name wlan0.100 type vlan id 100 2. 網卡啟動 > ip link set wlan0.100 up 這時ifconfig就可以看到這張網卡的資訊了!!! 3. 建立network物件,parent使用這張虛擬網卡 > docker network create -d macvlan -o parent=wlan0.100 -o macvlan_mode=bridge mac1 4. 建立兩個container,都使用這張網卡做macvlan > docker run -it --rm --network=mac1 nicolaka/netshoot > docker run -it --rm --network=mac1 nicolaka/netshoot 5. 兩個container互ping ![](https://hackmd.io/_uploads/rJtwfwZl6.png) 互ping成功。 ### 心得,跟實驗遇到的問題 1. 新增的虛擬網卡一定要啟動,不然容器互ping會失敗 2. 是否網卡要開promiscuous模式才可以正常取得獨立mac,這部份還要再確認 參考:有寫到:A MacVLAN network requires you to enable promiscuous mode on the parent interface of the Docker host, which is not required with IPvlan. https://4sysops.com/archives/configuring-ipvlan-networking-in-docker/