簡體   English   中英

使用 --network=host 在 MacOS 上運行 docker 容器時如何訪問主機上的端口?

[英]How to access a port on the host machine when running docker container on MacOS with --network=host?

我已經設置了幾個相互交互的容器。 主應用程序容器在--network = host上運行,因為它查詢在主機網絡上公開的不同端口上運行的幾個 mySQL 容器。

我正在嘗試訪問主機上的應用程序,但出現錯誤:

curl: (7) 無法連接到 0.0.0.0 端口 36081: 連接被拒絕

我正在研究安裝在 MacOS 上的 Docker。

我已經閱讀了幾個問題,這些問題表明 MacOS 上的 docker 在 VM 上運行。 但是從主機訪問應用程序的解決方法是什么? 有什么辦法可以獲取上述VM的IP嗎?

您不能在 Mac 上使用--network=host通過主機端口進行連接,但使用-p選項綁定到主機端口有效。

https://docs.docker.com/docker-for-mac/networking/#/there-is-no-docker0-bridge-on-osx

我想從 MAC 連接到容器

端口轉發適用於本地主機; --publish、-p 或 -P 都有效。 從 Linux 公開的端口被轉發到主機。

我們目前的建議是發布一個端口,或者從另一個容器連接。 如果容器位於覆蓋網絡而不是橋接網絡上,即使在 Linux 上,這也是您需要做的,因為這些沒有路由。

對於您的用例,

您需要創建一個 docker 網絡並將數據庫和應用程序容器附加到該網絡。 然后容器將能夠通過他們的名字相互交談。 您還可以發布應用程序容器端口,以便您可以從您的主機訪問它。

https://docs.docker.com/network/bridge/

您可以使用 docker-compose,而不是手動創建網絡、將容器附加到網絡等。

https://docs.docker.com/compose/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM