docker 容器中的应用无法在 net=host 的侦听端口上访问

App in docker container is not accessible on the listening port with net=host

我有一个应用程序在端口 4000 上侦听,并且需要 运行 它在一个带有 --net=host 的容器中以简化对主机上服务的访问。根据文档和许多关于 --net=host 的类似问题,我应该能够像 telnet localhost 4000 一样轻松地访问我的应用程序,但事实并非如此:无法访问容器中的应用程序。如果我 运行 容器 w/out --net=host-p 4000:4000,它可以工作,但不幸的是我不能使用它。

请记住,在 Mac/Windows 上使用瘦虚拟机,因为 Docker 需要 Linux 内核才能运行。所以使用 --net=host 不会像你预期的那样工作,本质上这将使用 VM 的主机网络。您应该能够通过访问 docker VM 的端口 4000 来验证这一点。

对于您的用例,我建议将其他服务移植到 docker,如果这不是一个选项 运行,像 dnsmasq 这样的本地 DNS 解析器应该可以解决问题。让一些域名解析到您的 Mac 主机 ip。