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


參考文檔

問題:docker的container內,本身是一個微小的主機,那么請求127.0.0.1或者localhost,自然是請求到了container本身的網絡,而無法抵達宿主機。在以往,需要各位去手動尋找docker創建的docker0 bridge來訪問宿主機網絡,但在今天,docker已經提供了非常優雅的解決辦法了

Linux:

Docker版本高於v20.10(2020年12月4日更新)
在啟動docker時,加入如下語句

--add-host=host.docker.internal:host-gateway

而在container內,可以直接請求host.docker.internal:PORT,來獲取宿主機上提供的各種服務
如果使用了Docker Compose,則應該將下面的句子加入container的聲明中:

extra_hosts:
- "host.docker.internal:host-gateway"

Mac和Windows:

Docker版本高於v18.03(2018年3月21日更新)
直接在container內使用host.docker.internal:PORT來訪問宿主機服務即可

對於Mac上Docker版本低於上述版本的:
Mac Docker版本v17.12到v18.02: 使用docker.for.mac.host.internal
Mac Docker版本v17.06到v18.11: 使用docker.for.mac.localhost
對於更低版本的docker,只能使用老舊的方法了,這里不再多做贅述


免責聲明!

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



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