在 docker 容器中通过 gunicorn 命令启动了一个 flask 程序,但在浏览器中访问 0.0.0.0:5000 时,却显示无法连接,这是怎么回事??

2016-03-24 19:31:58 +08:00
 biexiawo
6419 次点击
所在节点    问与答
12 条回复
msg7086
2016-03-24 20:25:06 +08:00
0.0.0.0 是「任意 IP 」的意思。
你访问的时候不能去访问随便一个地址吧。
RelativeLayout
2016-03-24 20:26:10 +08:00
启动指令是哪些?贴上来。估计是没有暴露端口导致的。
biexiawo
2016-03-24 20:45:19 +08:00
@msg7086 不是随便的, 我用的启动命令是: gunicorn -w 4 -b 0.0.0.0:8000 myapp:app
Bardon
2016-03-24 20:50:50 +08:00
http://localhost:5000
http://127.0.0.1:5000
http://192.168.x.x:5000

0.0.0.0 指接受本机所有 ip 地址的访问
你去访问 0.0.0.0 ,你指望路由怎么为你指路

都玩 docker 了,基础呢
stanjia
2016-03-24 20:51:39 +08:00
sudo docker ps -a
biexiawo
2016-03-24 20:52:38 +08:00
@RelativeLayout docker 刚入门,谢谢你的提示! 我之前用的启动 docker 命令是: sudo docker run -i -t image /bin/bash 查了下才知道在此模式下是无法访问的, 现在我用的命令是: sudo docker run --net host -t -i image /bin/bash 解决问题。
stanjia
2016-03-24 20:55:05 +08:00
sudo docker ps -a 查看下目前所有的 docker 容器,在运行的如果有端口映射的绑定
biexiawo
2016-03-24 20:59:39 +08:00
@stanjia 嗯嗯 感谢!
bdbai
2016-03-24 22:02:58 +08:00
docker run -p 5000:8000 yourimage 然后访问 http://localhost:5000 这样可以吗?
RelativeLayout
2016-03-25 06:52:55 +08:00
@biexiawo 赞!
biexiawo
2016-03-25 10:37:25 +08:00
@bdbai 我试着不行
julyclyde
2016-03-26 00:47:40 +08:00
--net host 且 gunicorn 监听 0000 的情况下,用 localhost:5000 是可以访问的
你可以用 lsof -i :5000 验证一下确实监听了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/266144

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX