我有一个应用程序在 localhost :4200(不是0.0.0.0:4200)上的docker容器中运行。如何将其公开给主机?
我在docker run上使用-p 4200:4200
时,无法进入该应用程序。
即curl localhost:4200
或curl http://127.0.0.1:4200
或curl http://<ip from ifconfig>:4200
或curl 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上的端口从容器公开到主机(这样就不必修改我的应用程序了。)
答案 0 :(得分:2)
您可以更明确地使用:
docker run --publish=127.0.0.1:4200:4200/tcp ....
但是:
127.0.0.1
对应于主机的环回适配器0.0.0.0
实际上是此主机上的任何网络适配器(包括127.0.0.1
)localhost
是通常映射到127.0.0.1
因此,无论使用哪种方法,结果都应该相同。
HTH!