前言
目前項目采用微服務架構進行開發,Nacos和其它服務部署到Docker中,Docker中容器采用的網絡默認是橋接模式(Bridge),默認的子網碼是172.17.0.1/16;宿主機是192.168.1.231;同宿主機其它網絡也是192.168.1.39;同事提出本地機器想與Docker中容器互通,訪問方式如下:
本地機器直接ping 容器IP(172.17.0.5)是訪問不通的,因為處於不通的網段,在百度上查找了半天也沒有找到合適的方法,自己通過摸索,采用macvlan+docker network connect進行連接。
1. docker的macvlan網絡創建
在Docker 宿主機執行如下命令:
docker network create -d macvlan \
--subnet=192.168.1.0/16 \
--gateway=192.168.1.1 \
-o parent=eth33 macvlan10
通過以下命令查找docker網絡命令如下:
docker network ls
可以看到macvlan10已經在該列表中,說明該命令已經成功
2. 把Docker中容器加入到macvlan10網絡中
docker network connect macvlan10 容器ID/名稱
3. 驗證
在本機執行 ping 容器IP,可以看到已經互通
4. 總結
在完成以上操作之后,可以通過docker inspect 容器ID,可以看到在容器的網絡配置中增加了macvlan10網關的配置,如下:
希望能夠給大家幫助,如果還有更好的方法,還希望大家分享!
堅持寫博客
以上配置之后,會出現macvlan模式容器與宿主機通信問題,可以通過如下配置進行設置
【Docker】macvlan網絡模式下容器與宿主機互通
https://rehtt.com/index.php/archives/236/