docker容器內訪問宿主機127.0.0.1服務

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

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章