繁体   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