Py学习  »  docker

无法通过主机访问Docker Flask服务器容器

ghbcode • 6 年前 • 503 次点击  

不幸的是,网络上充斥着类似的问题,尽管它们都略有不同,有些涉及虚拟机。以下是我的设置:

Mac OSX
Docker 18.06.0-CE型

我有一个非常简单的flask restful服务器,运行时可以通过以下方式访问: http://127.0.0.1:8015/Outlier/username/100/ 我得到了一个数值结果。

我已经用上面的服务器应用程序和需求flask、flask restful和requests设置了一个docker映像。当我运行该图像的容器时,我可以通过以下方式访问结果:

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_响应

我知道容器是在自己的ip:port上运行的,而在主机上,我必须正确到达那个位置。

docker ps <container id>

港口展示

0.0.0.0:8015->8015/TCP

我确保dockerfile确实公开了8015:8015(因此主机和容器端口匹配)

docker inspect <container id> 

返回一组详细信息,包括一个空主机提示。根据这个有用的 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://lt;192.168.1.75我的主机IP,通过ifconfig>:8015/outlier/username/100/
http://172.17.0.1:8015/Outlier/username/100/
http://lt;172.17.0.2,根据docker inspect>:8015/outlier/username/100,它是IP地址。/

有什么指针吗?

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/37949
文章 [ 1 ]  |  最新文章 6 年前
ghbcode
Reply   •   1 楼
ghbcode    7 年前

如果你看这个 posting 您将看到开箱即用的Docker无法在OSX上按预期工作,即,如果在容器中运行服务器应用程序,则在没有设置的情况下无法在主机上访问它。因为我的Mac空间不足,家里有一台Linux服务器,所以我在Linux(mint)中使用docker解决了这个问题。解决方案完全不需要调整。Docker在Linux中的工作正如您(我)所期望的那样。

最后,这里有一个链接指向一组非常有用的后期安装 settings to consider when you run Docker on a Mac .