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

互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/