docker容器內(nèi)訪問宿主機(jī)127.0.0.1服務(wù)
docker容器內(nèi)訪問宿主機(jī)127.0.0.1服務(wù)
? ? ?
點(diǎn)擊上方”技術(shù)生活“,選擇“設(shè)為星標(biāo)”
做積極的人,而不是積極廢人
背景
原因分析
解決方案
背景
????????已經(jīng)通過docker啟動(dòng)的elasticsearch 服務(wù),監(jiān)聽端口9200。在宿主機(jī)中直接通過http://127.0.0.1:9200 可以直接訪問,但是通過docker訪問缺不行,訪問url:http://127.0.0.1:9200 或者h(yuǎn)ttp://localhost:9200
原因分析
????docker是一個(gè)虛擬環(huán)境,127.0.0.1和localhost指的是虛擬環(huán)境內(nèi)部,而不是外部宿主機(jī),所以無法這樣訪問.
解決方案
? ?1、?對(duì)于mac和windows,可以使用host.docker.internal替換127.0.0.1,如http://host.docker.internal:9200?(親測(cè)好使)
????2、對(duì)于Linux可以采用如下方案
????????????創(chuàng)建一個(gè)橋接網(wǎng)絡(luò)
????????????下面的localNet是網(wǎng)絡(luò)名字,可自行修改;關(guān)于192.168.0.0這個(gè)子網(wǎng),也可以自行定義.
?默認(rèn)按照下面的命令,執(zhí)行后將可以通過192.168.0.1訪問宿主機(jī).
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