docker 无法访问主机中的 gunicorn 服务资源

docker fails to access a gunicorn served resource in the host

我加载了一张简单的 docker ubuntu 图片。启动容器。在该容器中安装 curl。

在 docker 主机。我写了两个基于 python 的网络服务器。一个基于 SimpleHTTPServer(托管在端口 4000)和一个基于 falcon(托管在 5000 上,带有 gunicorn)。

可从容器 shell:

访问基于 python 的 Web 服务器
root@430a51680859:/# curl http://172.17.0.1:4000
<!DOCTYPE>
<html>
    <head>
        <title>Hello World</title>
    </head>
    <body>
        <h1>Welcome</h1>
        <p>Hello World</p>
    </body>
</html>

但是 gunicorn 失败了:

root@430a51680859:/# curl http://172.17.0.1:5000/quote
curl: (7) Failed to connect to 172.17.0.1 port 5000: Connection refused

Gunicorn 默认只监听本地主机 (127.0.0.1),而 SimpleHTTPServer 默认监听所有接口。为了能够访问 Gunicorn 服务的页面,运行 Gunicorn 使用 -b 0.0.0.0:5000(监听所有接口)或 -b 172.17.0.1:5000(仅监听 docker0,可从 Docker容器)。