不幸的是,网络上充满了类似的问题,尽管它们都稍有不同,并且其中有些涉及虚拟机。这是我的设置:
Mac osx 10.13.2
Docker 18.06.0-ce
我有一个非常简单的Flask Restful服务器,运行时可以通过以下方式访问: http://127.0.0.1:8015/Outlier/username/100/ 我得到一个数值结果。
我已经使用上面的服务器应用程序设置了Docker映像,并要求flask,flask-restful和请求。当我运行该图像的容器时,我可以通过以下方式访问结果:
docker exec <container id> curl http://127.0.0.1:8015/Outlier/username/100/
问题在于,当我访问http://127.0.0.1:8015/Outlier/username/100/时 通过chrome,在主机上,我收到消息:
此页面无效 127.0.0.1未发送任何数据。 ERR_EMPTY_RESPONSE
我知道容器在自己的ip:port上运行,并且在主机上我必须正确到达该位置。
docker ps <container id>
对于PORTS表演
0.0.0.0:8015-> 8015 / tcp
我确保Dockerfile符合EXPOSE 8015:8015(因此主机端口和容器端口匹配)
docker inspect <container id>
返回一堆细节,包括一个为空的HostIp。根据这个有用的docker post,我必须查看“网关”设置,本例中为172.17.0.1。无论如何,我已经在我的主机上通过chrome(和curl)尝试了以下操作,但没有成功。我还应该设置其他哪些设置?这不应该花时间...
http://localhost:8015/Outlier/username/100/
http://0.0.0.0:8015/Outlier/username/100/
http://127.0.0.1:8015/Outlier/username/100/
我的主机的http:// <192.168.1.75 ip通过ifconfig>:8015 / Outlier / username / 100 /
http://172.17.0.1:8015/Outlier/username/100/
http:// <172.17.0.2是根据docker inspect的IP地址>:8015 / Outlier / username / 100 /
有指针吗?
答案 0 :(得分:0)
如果您查看此posting,将会发现Docker在OSX上无法按预期工作,即,如果您在容器中运行服务器应用程序,则将无法在Docker上访问它。您的主机没有进行任何设置。由于我的Mac上空间不足,并且家里有Linux服务器,因此我通过在Linux(薄荷)中使用Docker解决了此问题。该解决方案完全不需要任何调整。 Linux中的Docker可以按您期望的那样工作。
最后,这是指向一组非常有用的安装后settings to consider when you run Docker on a Mac的链接。