背景
搭了一個Consul叢集,在Homestead用Docker搭建後,想在物理機可以直接訪問ip:8500 直接訪問Consul的Web頁面。下面記錄下我自己的解決過程
環境
Win10 + Hyper-V + Vagrant
實現目標
宿主機訪問虛擬機器內的Docker獨立IP
IP關係圖解
在虛擬機器中建立一個自定義網路
docker network create --subnet=172.18.0.0/24 docker-br0
# 建立一個172.18.0.0網段,網橋的名字命名為docker-br0,這兩個根據自己需要來
檢視容器的ip地址
我們在虛擬機器環境下,使用ping
訪問172.18.0.2
測試是否能通
到物理機win10中訪問172.18.0.2
,測試是否能訪問
虛擬機器開啟路由轉發
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# sysctl -p 檢查是否設定成功
# 設定成功後vagrant需要重啟,後續才能ping通
物理機win10路由表加入172.18.0.0
route add 172.18.0.0 mask 255.255.255.0 192.168.137.200
物理機win10再次訪問172.18.0.2
注* Consul實際在物理機Windows可以直接用Docker搭建,個人喜好問題。
- 最後總結
1.建立自定義網段
2.選一個自定義網段內的IP,開啟容器
3.開啟虛擬機器的路由轉發
4.在物理機路由中新增自定義網段的路由條目,指定介面為虛擬機器的IP地址 - 參考資料
consul叢集
物理機與虛擬機器docker通訊
hyper-v網路卡設定
本作品採用《CC 協議》,轉載必須註明作者和本文連結