Docker 教程,本地主机 :4000 is inaccessible

标签 docker

按照 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/

相关文章:

docker - 没有负载平衡器的暴露容器

docker - 当您使用 Docker 提交容器时到底发生了什么?

docker - Docker opensx make dev.provision失败

docker - 如何从minikube访问Rabbitmq的管理UI?

linux - 运行 Alpine Linux 的 Docker 容器中 rrdgraph 中的自定义字体

docker - 具有委托(delegate)一致性的 docker 容器之间的文件系统是否一致?

docker - Docker群-Manager节点无法访问工作节点中的容器

python - Docker 容器中的 ModuleNotFoundError 和导入错误

javascript - 获取终端响应并将其存储为 Node js中的变量

docker - Kong-返回的自定义插件:自定义插件已启用但未安装;