docker启动Dify后接入本地xinfrence时报错:Failed to establish a new connection: [Errno 111] Connection refused
当在Docker容器内部的应用试图连接到宿主机上的服务时,需要一种方法来从容器内部正确地引用宿主机的IP地址。是一个特殊的域名,它在Docker容器中解析为主机的IP地址,这使得容器可以与宿主机上的服务进行通信。当一个应用在一个Docker容器内运行时,它试图连接到另一个同样运行在本地机器上的服务时,通常会使用。指的是容器自身的回环接口,而不是宿主机的回环接口。然而,在Docker容器内部,请求U
Windows下,使用docker compose启动Dify后,在其中配置本地xinfrence中的模型,报错:
get xinference model extra parameter failed, url: http://127.0.0.1:9997/v1/models/bge-m3, error: HTTPConnectionPool(host='127.0.0.1', port=9997): Max retries exceeded with url: /v1/models/bge-m3 (Caused by NewConnectionError('<urllib3.connection.HTTPConnection object at 0x7fb3b25de7d0>: Failed to establish a new connection: [Errno 111] Connection refused'))
解决办法:
请求URL改为:http://host.docker.internal:9997
原因:
当一个应用在一个Docker容器内运行时,它试图连接到另一个同样运行在本地机器上的服务时,通常会使用127.0.0.1或localhost作为目标地址。然而,在Docker容器内部,127.0.0.1指的是容器自身的回环接口,而不是宿主机的回环接口。
因此,当在Docker容器内部的应用试图连接到宿主机上的服务时,需要一种方法来从容器内部正确地引用宿主机的IP地址。host.docker.internal是一个特殊的域名,它在Docker容器中解析为主机的IP地址,这使得容器可以与宿主机上的服务进行通信。
具体来说:
- 在Docker for Windows和Docker for Mac环境下,
host.docker.internal会解析为宿主机的IP地址。 - 在Linux系统中,虽然没有专门的
host.docker.internal域名,但如果使用的是Docker网络(比如桥接网络),通常可以通过172.17.0.1(或者/proc/net/route中的LOCAL行所指向的地址)来访问宿主机的网络接口。
更多推荐




所有评论(0)