【发布时间】:2020-03-24 08:07:52
【问题描述】:
我的虚拟机操作系统是 CentOS 7,它的 docker 版本是 19.03.8。我创建了自己的图像python-image。我运行以下代码来创建一个新容器:
docker run -it -p 5555:5000 python-image /bin/bash
在容器中,一个名为test.py的python脚本如下:
# test.py
from flask import Flask
app = Flask(__name__)
@app.route('/')
def func():
return "Hello docker!"
if __name__ == '__main__':
app.run('0.0.0.0', port=5000)
然后我运行 python test.py 并向上运行容器。
在主机 shell 中,我运行 curl http://127.0.0.1:5555/ 并打印:
curl: (56) Recv failure: Connection reset by peer
我知道如果在创建容器时将--network指定为host:
docker run -it --network host python-image /bin/bash
启动服务器并在主机中运行curl http://127.0.0.1:5555/ 将获得预期的信息。我想知道当保持默认值--network 时我应该怎么做才能得到相同的结果。
【问题讨论】:
-
这看起来基本正确,除了您的
docker run命令正在启动 bash shell 而不是您的服务器应用程序。但是-p选项、app.run()调用和端口规范似乎都是正确的。 -
...容器是在虚拟机内运行,而浏览器是在主机上的虚拟机外运行吗?您需要在已发布的端口上连接到 VM 的 IP 地址。
-
@DavidMaze 浏览器位于虚拟机内部。
标签: python docker flask containers