docker curl: (56) Recv failure: Connection reset by peer

 

场景:在部署Django程序时,启动方式为gunicorn mysite.wsgi

以这种方式启动后,容器内部访问正常,部署容器的虚拟机上访问正常,物理机上浏览器无法访问,

此时修改启动方式为gunicorn -b 0.0.0.0:8000 mysite.wsgi:application

修改后容器内部、虚拟机上、宿主机上都可以访问了,

推测原因:

不绑定端口的启动方式gunicorn mysite.wsgi, 

这样会创建一个进程,包含了一个监听在 127.0.0.1:8000 的线程。

https://docs.djangoproject.com/zh-hans/3.1/howto/deployment/wsgi/gunicorn/

 

{0,0}:网络号和主机号都全部为0,表示“本网络上的本主机”,只能用作源地址。
{0,host-id}:本网络上的某台主机。只能用作源地址。
{-1,-1}:表示网络号和主机号的所有位上都是1(二进制),用于本网络上的广播,只能用作目的地址,发到该地址的数据包不能转发到源地址所在网络之外。
{net-id,-1}:直接广播到指定的网络上。只能用作目的地址。
{net-id,subnet-id,-1}:直接广播到指定网络的指定子网络上。只用作目的地址。
{net-id,-1,-1}:直接广播到指定网络的所有子网络上。只能用作目的地址。
{127,}:即网络号为127的任意ip地址。都是内部主机回环地址(loopback),永远都不能出现在主机外部的网络中

 

外部主机是无法访问127的服务的,所以改绑定到0.0.0.0就行了,

posted @ 2021-02-23 20:01  十点  阅读(1390)  评论(0编辑  收藏  举报