我有一个在 localhost :4200(不是0.0.0.0:4200)上的docker容器中运行的应用程序。如何将其公开给主机?

当我在docker run上使用-p 4200:4200时,无法进入该应用程序。
curl localhost:4200curl http://127.0.0.1:4200curl http://<ip from ifconfig>:4200curl http://0.0.0.0:4200不起作用。
但是,docker exec <container-id> curl localhost:4200有效。这意味着应用程序已成功启动,但是容器上localhost上的4200端口未暴露给主机。

我停止了该应用程序,并修改了该应用程序(在同一运行容器上),以在0.0.0.0:4200而不是localhost:4200上公开该应用程序。之后,我可以转到curl http://0.0.0.0:4200

我试图弄清楚如何将本地主机上的端口从容器公开到主机(这样就不必修改我的应用程序)。

最佳答案

您可以更明确地使用:

docker run --publish=127.0.0.1:4200:4200/tcp ....

参见documentation

然而:
  • 127.0.0.1对应于主机的回送适配器
  • 0.0.0.0实际上是此主机上的任何网络适配器(包括127.0.0.1)
  • localhost是通常映射到127.0.0.1的DNS名称

  • 因此,无论使用哪种方法,结果都应该相同。

    HTH!

    关于docker - 如何公开在docker内部localhost上运行的应用程序?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57044378/

    10-16 01:16