Python 如何从docker内部访问localhost(flask应用程序)?

Python 如何从docker内部访问localhost(flask应用程序)?,python,docker,localhost,Python,Docker,Localhost,在我的笔记本电脑上,我可以启动简单的烧瓶应用程序: import os import io from flask import Flask app = Flask(__name__) @app.route("/") def hello(): s = """ This is a localhost! """ return (s) if __name__ == "__main__": app.run

在我的笔记本电脑上,我可以启动简单的烧瓶应用程序:

import os
import io
from flask import Flask

app = Flask(__name__)

@app.route("/")
def hello():
        s = """
                This is a localhost!
        """
        return (s)

if __name__ == "__main__":
        app.run(host='0.0.0.0', port=3000, debug=True)
当我在笔记本电脑上安装curl localhost:3000时,我会得到很好的响应

但是,当我启动一个docker映像并放入相同的代码并使用相同版本的Python启动它时——它显示为正在运行,但当我从docker curl localhost:3000中启动时——没有得到任何响应,它只是挂起,什么也没有发生

如何在docker内部启用本地主机路由? 谢谢。

将代码更改为

app.runhost='127.0.0.1',端口=3000,调试=True


并检查是否在/etc/hosts中定义了localhost。

是否尝试ping localhost?路线在哪里?另外,读取ping localhost ping localhost 127.0.0.1 5684字节的数据。来自localhost 127.0.0.1的64字节:icmp_seq=1 ttl=64 time=0.081 MSC您能描述一下您是如何构建和运行应用程序的吗?没有进行任何绑定或路由。正确的步骤是什么?Docker官方教程将介绍一个类似这样的Python示例。你很可能错过了docker run-p选项?还请记住,每个容器都有自己的localhost概念,在Docker相关问题中,最明显的是避免使用该主机名和等效的127.0.0.1 IPv4地址。尝试了这个,但没有帮助。如何设置/etc/hosts?127.0.0.1 localhosts这将主动阻止应用程序在Docker中工作。如问题所示,它必须是host='0.0.0.0'。这是一个非常常见的Docker问题。@DavidMaze那么解决方案是什么呢?@Joe尝试创建一个自己的Docker网络Docker网络创建mynet,然后在此网络中启动容器,并给他一个类似Docker run的主机名-p 3000:3000-net=mynet-ip=172.18.0.2-hostname=myservice.foobar.com。然后,您应该能够通过ip从主机访问您的服务。您还可以在主机上设置/etc/host以了解myservice.foobar.com,并在docker内设置myservice.foobar.com。如果在主机上连接网络时遇到问题,则需要添加静态路由:路由/P添加172.18.0.0掩码255.255.0.0 10.0.75.2