无法从主机访问Docker容器的localhost

时间:2020-07-01 10:30:28

标签: python macos docker flask devops

我在ubuntu容器中有一个应用程序,该应用程序在localhost(127.0.0.1)接口上的各个端口上运行服务。我正在尝试在运行容器时使用-p参数将那些端口与主机端口映射。

出于测试目的,我创建了一个示例测试,其中我仅在容器内部的所有接口(0.0.0.0)上运行了flask应用程序服务器。

from flask import Flask
from flask import request

app = Flask(__name__)

@app.route('/')
def index():
    print(request.headers)
    return "<h1 style='color: red'>HELLO THIS IS MY WEBSITE</h1>"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=3000)

我使用以下命令运行容器: docker run -it -p 3000:3000 python:test python app.py 一切都按预期进行。

❯ curl localhost:3000
<h1 style='color: red'>HELLO THIS IS MY WEBSITE</h1>

然后,我将主机更改为使用127.0.0.1app.run(host="127.0.0.1", port=3000)),并使用相同的docker命令运行容器。但是现在主机上不提供该服务。

❯ curl localhost:3000
curl: (52) Empty reply from server
  • 我错过了什么还是做错了什么?
  • 这是docker的一种限制,其中服务需要在公共接口上运行? (我找不到提及此类限制的文档)
  • 这是Mac专用的docker吗?

0 个答案:

没有答案