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容器)。
我加载了一张简单的 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容器)。