遵循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,我使用
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,服务器启动,我可以命中它。我想念什么?
答案 0 :(得分:1)
尝试使用以下命令运行它:
docker run -p 4000:8088 friendlyhello
从日志中可以看到,您的应用在端口8088
上启动,但是您将4000
连接到80
上的80
上,实际上并没有监听。 / p>
答案 1 :(得分:1)
您是否不小心将port = 8088放在了app.py文件的底部?运行此命令时,输出的最后一行表示python应用程序暴露在端口8088而不是80上。
要确认您可以运行,请修改app.py文件并重建映像,或者可以运行:docker run -p 4000:8088 friendlyhello
,它将本地端口4000映射到容器中的8088。