我在用着Docker for Mac
。我有一个运行服务器的容器,例如我的服务器在端口 5000 上运行。我已将此端口公开Dockerfile
当我的容器运行时,我连接到该容器并通过运行下面的命令来检查该服务器是否正在工作,并查看它是否返回数据(一堆 html 和 javascript)
wget -d localhost:5000
注意,我启动这个容器并通过命令向外部发布端口:
docker run -d -p 5000:5000 <docker_image_name>
但是在 docker 主机(是我的 mac 并运行 El Capitan),我打开 chrome 并转到地址localhost:5000
。这不起作用。请注意,如果我去任何任意端口,例如localhost:4000
我看到来自 chrome 的错误消息,例如:
This site can’t be reached
localhost refused to connect.
但错误消息为localhost:5000
is:
The localhost page isn’t working
localhost didn’t send any data.
所以看来我已经配置了“一点”工作,但有些问题。请告诉我如何解决这个问题。
请检查容器中的程序正在监听接口0.0.0.0。
在容器中,运行命令:
ss -lntp
如果它看起来像:
LISTEN 0 128 127.0.0.1:5000 *:*
这意味着您的 Web 应用程序仅在本地主机上侦听,因此容器主机无法访问您的 Web 应用程序。你应该让你的服务器监听0.0.0.0
通过更改您的网络应用程序构建设置来实现界面。
例如,如果您的服务器是nodejs应用程序:
var app = connect().use(connect.static('public')).listen(5000, "0.0.0.0");
如果您的服务器是 web pack:
"scripts": {
"dev": "webpack-dev-server --host 0.0.0.0 --port 5000 --progress"
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)