按照 https://docs.docker.com/get-started/part2/ 上的教程进行操作.
我用docker run -p 4000:80 friendlyhello
启动我的docker容器
看看
* Serving Flask app "app" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://0.0.0.0:8088/ (Press CTRL+C to quit)
但无法从 localhost:4000 的预期路径访问。
$ curl http://localhost:4000/
curl: (7) Failed to connect to localhost port 4000: Connection refused
$ curl http://127.0.0.1:4000/
curl: (7) Failed to connect to 127.0.0.1 port 4000: Connection refused
好吧,也许它不在我的本地主机上。获取容器 ID 我用它检索 IP
docker inspect --format '{{ .NetworkSettings.IPAddress }}' 7e5bace5f69c
它返回172.17.0.2
但没有运气! curl
继续给出相同的答复。我可以确认 4000
上正在运行某些内容....
lsof -i :4000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
com.docke 94812 travis 18u IPv6 0x7516cbae76f408b5 0t0 TCP *:terabase (LISTEN)
我对此很抓狂。我已阅读故障排除指南并可以确认 * 不在代理上 * 不要使用自定义 DNS * 我在连接到 docker 时遇到问题,而不是 docker 连接到我的 pip 服务器时遇到问题。
使用 python app.py
运行 app.py服务器启动,我可以点击它。我错过了什么?
最佳答案
您是否不小心将 port=8088 放在了 app.py 文件的底部?当您运行此命令时,输出的最后一行表明您的 python 应用程序在端口 8088 而不是 80 上公开。
要确认您可以运行修改 app.py 文件并重建镜像,或者您可以运行:docker run -p 4000:8088Friendlyhello
,这会将本地端口 4000 映射到 8088在容器中。
关于Docker 教程,本地主机 :4000 is inaccessible,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57701570/