docker容器內訪問宿主機127.0.0.1服務
點擊上方”技術生活“,選擇“設爲星標”
做積極的人,而不是積極廢人
-
背景
-
原因分析
-
解決方案
背景
已經通過docker啓動的elasticsearch 服務,監聽端口9200。在宿主機中直接通過http://127.0.0.1:9200 可以直接訪問,但是通過docker訪問缺不行,訪問url:http://127.0.0.1:9200 或者http://localhost:9200
原因分析
docker是一個虛擬環境,127.0.0.1和localhost指的是虛擬環境內部,而不是外部宿主機,所以無法這樣訪問.
解決方案
1、 對於mac和windows,可以使用host.docker.internal替換127.0.0.1,如http://host.docker.internal:9200 (親測好使)
2、對於Linux可以採用如下方案
創建一個橋接網絡
下面的localNet是網絡名字,可自行修改;關於192.168.0.0這個子網,也可以自行定義.
默認按照下面的命令,執行後將可以通過192.168.0.1訪問宿主機.
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet
使用192.168.0.1替換127.0.0.1,如http://192.168.0.1:9200