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

2016 年 3 月 24 日
 biexiawo
6931 次点击
所在节点    问与答
12 条回复
msg7086
2016 年 3 月 24 日
0.0.0.0 是「任意 IP 」的意思。
你访问的时候不能去访问随便一个地址吧。
RelativeLayout
2016 年 3 月 24 日
启动指令是哪些?贴上来。估计是没有暴露端口导致的。
biexiawo
2016 年 3 月 24 日
@msg7086 不是随便的, 我用的启动命令是: gunicorn -w 4 -b 0.0.0.0:8000 myapp:app
Bardon
2016 年 3 月 24 日
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 年 3 月 24 日
sudo docker ps -a
biexiawo
2016 年 3 月 24 日
@RelativeLayout docker 刚入门,谢谢你的提示! 我之前用的启动 docker 命令是: sudo docker run -i -t image /bin/bash 查了下才知道在此模式下是无法访问的, 现在我用的命令是: sudo docker run --net host -t -i image /bin/bash 解决问题。
stanjia
2016 年 3 月 24 日
sudo docker ps -a 查看下目前所有的 docker 容器,在运行的如果有端口映射的绑定
biexiawo
2016 年 3 月 24 日
@stanjia 嗯嗯 感谢!
bdbai
2016 年 3 月 24 日
docker run -p 5000:8000 yourimage 然后访问 http://localhost:5000 这样可以吗?
RelativeLayout
2016 年 3 月 25 日
@biexiawo 赞!
biexiawo
2016 年 3 月 25 日
@bdbai 我试着不行
julyclyde
2016 年 3 月 26 日
--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