在docker容器中訪問宿主機端口


https://www.cnblogs.com/m-finder/p/11592716.html

 

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

原本,nginx內配置了代理轉發到node服務端口:

location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
proxy_set_header X-Forwarded-Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
}
 
但是,將node服務部署在宿主機上之后,就不能直接通過 http://localhost:8000訪問了,會報錯502,也就是說,容器內訪問localhost是無法訪問到宿主機的。

網上有很多方法:
1、docker for mac ,容器內可以通過 域名:docker.for.mac.host.internal 來訪問宿主機,本人實測,使用該域名還是沒有訪問到宿主機
2、還有一種解決方案是,在安裝Docker的時候,會在宿主機安裝一個虛擬網關 docker0 ,我們可以使用宿主機在 docker0 上的IP地址來代替 localhost,但是實測沒有該虛擬網關,可能是是操作系統原因。

最佳實踐的解決方案:
通過ifconfig查看到網絡狀態,找到 status:active 的 ip 地址,在容器內ping一下,如果能ping通,就使用該ip在容器內訪問宿主機。
———————————————— 

https://blog.csdn.net/hhhzua/article/details/102613637


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM