如何公开在docker内部localhost上运行的应用程序?

时间:2019-07-15 17:11:03

标签: docker

我有一个应用程序在 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

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

1 个答案:

答案 0 :(得分:2)

您可以更明确地使用:

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!