我有一个在 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
。
我试图弄清楚如何将本地主机上的端口从容器公开到主机(这样就不必修改我的应用程序)。
最佳答案
您可以更明确地使用:
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/