Colab连接Docker部署OpenSearch报[Errno 111]连接拒绝错误
问题根因
连接被拒的核心原因有两个:
- Google Colab是云端托管运行环境,其运行环境内的
localhost指向Colab自身的服务容器,根本不是你本地Windows主机,直接填localhost不可能连到你本地Docker里的OpenSearch。 - 现有客户端配置、Docker端口映射存在配置错误,就算网络通了也会触发连接/校验失败。
分步排查解决方法
- 先验证本地Docker服务可用性
直接在你本地Windows系统的浏览器地址栏输入https://localhost:9200访问:- 如果能弹出认证窗口、输入admin/admin后返回OpenSearch版本相关的JSON信息,说明容器运行正常、端口映射没问题。
- 如果访问失败,打开你部署OpenSearch用的docker-compose配置文件,确认端口配置段存在以下映射规则,修改后执行
docker-compose up -d重启容器再重试本地访问:ports: - 9200:9200 - 9600:9600
- 解决Colab到本地服务的网络连通问题
云端的Colab默认无法直接访问你本地内网的服务,二选一处理即可:- 本地使用内网穿透工具,将Windows主机的9200端口映射到公网,获取公网可访问的HTTPS地址后,将代码里的host替换为该公网地址、port替换为对应服务端口即可。注意该方式存在安全风险,测试完成后立即关闭穿透服务。
- 放弃使用Colab,直接在本地Windows系统安装Python环境运行连接代码,此时host填
localhost才会指向你本机的OpenSearch服务。
- 修正客户端配置错误
你当前代码里verify_certs = True但未配置自定义CA证书路径,网络连通后也会触发证书校验失败,根据你的安全配置二选一调整:- 如果你保留默认安全插件(没关SSL、用默认账号密码),客户端配置修改为:
client = OpenSearch( hosts = [{'host': 实际可用的服务地址, 'port': 对应端口}], http_compress = True, http_auth = ('admin', 'admin'), use_ssl = True, verify_certs = False, # 测试环境用自签证书可临时关闭校验,生产环境必须开启并配置正确CA证书 ssl_assert_hostname = False, ssl_show_warn = False ) - 如果你已经按照官方文档完全禁用了安全插件,直接删除SSL相关配置和认证配置即可:
client = OpenSearch( hosts = [{'host': 实际可用的服务地址, 'port': 9200}], http_compress = True, use_ssl = False )
- 如果你保留默认安全插件(没关SSL、用默认账号密码),客户端配置修改为:
- 防火墙拦截排查
如果本地浏览器可以正常访问9200端口,但穿透后依然连不上,检查Windows Defender防火墙的入站规则,放开9200端口的访问权限,也可临时关闭防火墙做连通性测试。
附原始报错核心信息
ConnectionRefusedError: [Errno 111] Connection refused ConnectionError: <urllib3.connection.VerifiedHTTPSConnection object at 0x7f1f3be83690>: Failed to establish a new connection: [Errno 111] Connection refused
内容的提问来源于stack exchange,提问作者Divyank
相关产品推荐
相关产品推荐

