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在容器內訪問宿主機。
————————————————