【Bug】docker容器之间网络通讯失败

目录

  • 报错起因
  • 报错内容
  • 解决方案

报错起因

我启动了Milvus数据库

# docker ps
CONTAINER ID   IMAGE                        COMMAND                  CREATED             STATUS                    PORTS                                                                                      NAMES
1099dda8c0fa   milvusdb/milvus:v2.4.1       "/tini -- milvus run…"   17 minutes ago      Up 17 minutes (healthy)   0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp   milvus-standalone
acafc6ef57bc   quay.io/coreos/etcd:v3.5.5   "etcd -advertise-cli…"   17 minutes ago      Up 17 minutes (healthy)   2379-2380/tcp                                                                              milvus-etcd
587d1ee57611   minio/minio:latest           "/usr/bin/docker-ent…"   17 minutes ago      Up 17 minutes (healthy)   0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp                              milvus-minio

可以看到运行都很正常,但是我在另外一个容器中写代码访问19530端口,失败

报错内容

Traceback (most recent call last):File "/home/rag/startup.py", line 910, in <module>client = MilvusClient(uri=Milvus_Client_URI,db_name=Milvus_DB_NAME)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/milvus_client/milvus_client.py", line 60, in __init__self._using = self._create_connection(File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/milvus_client/milvus_client.py", line 728, in _create_connectionraise ex from exFile "/root/miniconda3/lib/python3.10/site-packages/pymilvus/milvus_client/milvus_client.py", line 725, in _create_connectionconnections.connect(using, user, password, db_name, token, uri=uri, **kwargs)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/orm/connections.py", line 449, in connectconnect_milvus(**kwargs, user=user, password=password, token=token, db_name=db_name)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/orm/connections.py", line 400, in connect_milvusgh._wait_for_channel_ready(timeout=timeout)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/client/grpc_handler.py", line 150, in _wait_for_channel_readyraise MilvusException(
pymilvus.exceptions.MilvusException: <MilvusException: (code=2, message=Fail connecting to server on 172.17.0.2:19530, illegal connection params or server unavailable)>

这里的172.17.0.2来自于

import socketdef get_ip_address():s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)try:# doesn't even have to be reachables.connect(('10.254.254.254', 1))IP = s.getsockname()[0]except Exception:IP = '127.0.0.1'finally:s.close()return IPhost = get_ip_address()

后面尝试更换为0.0.0.0

Traceback (most recent call last):File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/client/grpc_handler.py", line 147, in _wait_for_channel_readygrpc.channel_ready_future(self._channel).result(timeout=timeout)File "/root/miniconda3/lib/python3.10/site-packages/grpc/_utilities.py", line 162, in resultself._block(timeout)File "/root/miniconda3/lib/python3.10/site-packages/grpc/_utilities.py", line 106, in _blockraise grpc.FutureTimeoutError()
grpc.FutureTimeoutErrorThe above exception was the direct cause of the following exception:Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/orm/connections.py", line 449, in connectconnect_milvus(**kwargs, user=user, password=password, token=token, db_name=db_name)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/orm/connections.py", line 400, in connect_milvusgh._wait_for_channel_ready(timeout=timeout)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/client/grpc_handler.py", line 150, in _wait_for_channel_readyraise MilvusException(
pymilvus.exceptions.MilvusException: <MilvusException: (code=2, message=Fail connecting to server on 0.0.0.0:19530, illegal connection params or server unavailable)>

更换为127.0.0.1

Traceback (most recent call last):File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/client/grpc_handler.py", line 147, in _wait_for_channel_readygrpc.channel_ready_future(self._channel).result(timeout=timeout)File "/root/miniconda3/lib/python3.10/site-packages/grpc/_utilities.py", line 162, in resultself._block(timeout)File "/root/miniconda3/lib/python3.10/site-packages/grpc/_utilities.py", line 106, in _blockraise grpc.FutureTimeoutError()
grpc.FutureTimeoutErrorThe above exception was the direct cause of the following exception:Traceback (most recent call last):File "<stdin>", line 1, in <module>File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/orm/connections.py", line 449, in connectconnect_milvus(**kwargs, user=user, password=password, token=token, db_name=db_name)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/orm/connections.py", line 400, in connect_milvusgh._wait_for_channel_ready(timeout=timeout)File "/root/miniconda3/lib/python3.10/site-packages/pymilvus/client/grpc_handler.py", line 150, in _wait_for_channel_readyraise MilvusException(
pymilvus.exceptions.MilvusException: <MilvusException: (code=2, message=Fail connecting to server on 127.0.0.1:19530, illegal connection params or server unavailable)>

以上都是无效的

解决方案

首先查看容器所在网段

docker network ls

得到

NETWORK ID     NAME             DRIVER    SCOPE
738c89ed339b   bridge           bridge    local
62ec1478cea1   host             host      local
5dc70a167a10   milvus           bridge    local
4d746c095f03   minio_default    bridge    local
40c6e5fbe685   mysql8_default   bridge    local
b101e25dcb4e   nginx_default    bridge    local

接下来查看milvus的IP信息

docker network inspect milvus

得到

[{"Name": "milvus","Id": "5dc70a167a103d723fe81bc0feb95b996995d3d464f9601ce9c52d10342e3a6c","Created": "2024-10-12T13:55:27.648549485+08:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": null,"Config": [{"Subnet": "172.18.0.0/16","Gateway": "172.18.0.1"}]},"Internal": false,"Attachable": true,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {"40fd07ae3cdb975afedaf9861117aae38cddb0e63c977d14891d4af860c2885d": {"Name": "eager_solomon","EndpointID": "a9b87ca7cb773953361e58b761b20f2d90f9a0c222dc2ce1fca08238dd0cb1cf","MacAddress": "02:42:ac:12:00:05","IPv4Address": "172.18.0.5/16","IPv6Address": ""},"6453a43e6cfa6b13b5a043bf62255447dbef1ce86876bdcdee55f6520f651bb5": {"Name": "milvus-minio","EndpointID": "e977606fab9781521fa9dfcd8fcdec032b58daca9d7449cbc338c78ecbca1646","MacAddress": "02:42:ac:12:00:03","IPv4Address": "172.18.0.3/16","IPv6Address": ""},"957671f5a506146d5381e26f8afc22c5d2c5566678043a054d2cc4d0febd8873": {"Name": "milvus-etcd","EndpointID": "4c0c44610d15254f53ea9839d34bdbf841427fcf6f7ef097b82c95694b5422c4","MacAddress": "02:42:ac:12:00:02","IPv4Address": "172.18.0.2/16","IPv6Address": ""},"e6c952ee5bd431adf2c5bb3daf643612a4811f5155c46d46ac73607a845830ee": {"Name": "milvus-standalone","EndpointID": "9fb76ce838126cf651d43360342b96ad1184b8ba37f4ab92e022ccb5fae38cf0","MacAddress": "02:42:ac:12:00:04","IPv4Address": "172.18.0.4/16","IPv6Address": ""}},"Options": {},"Labels": {"com.docker.compose.network": "milvus","com.docker.compose.project": "milvus","com.docker.compose.version": "1.29.2"}}
]

看到milvus-standalone的IPv4地址为172.18.0.4
最终用这个地址链接成功

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/54954.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android Studio 打包aar丢失远程依赖问题解决

之前打包&#xff0c;使用的com.kezong.fat-aar&#xff0c;embed&#xff08;‘XXXX’&#xff09;的方式&#xff0c;可以使三方依赖打包在aar包里&#xff0c;在项目里直接使用 升级了Gradle&#xff1a;7.5后&#xff0c;打包就打包不起来了&#xff0c;一直报错&#xff…

docker-compos安装部署elasticsearch和kibana

elasticsearch和kibana安装部署 version: "3.4" services:elasticsearch:image: docker.das-security.cn/middleware/elasticsearch:7.17.18container_name: elasticsearchenvironment:- discovery.typesingle-node- xpack.security.enabledtrue- xpack.security.au…

【机器学习】金融预测 —— 风险管理与股市预测

我的主页&#xff1a;2的n次方_ 在金融领域&#xff0c;机器学习&#xff08;ML&#xff09;已经成为了不可或缺的工具。金融预测&#xff0c;尤其是风险管理和股市预测&#xff0c;涉及海量数据和复杂模式的分析&#xff0c;而这些正是机器学习擅长处理的领域。通过分析历…

Sentinel最全笔记,详细使用步骤教程清单

一、Sentinel的基本功能 1、流量控制 流量控制在网络传输中是一个常用的概念&#xff0c;它用于调整网络包的发送数据。然而&#xff0c;从系统稳定性角度考虑&#xff0c;在处理请求的速度上&#xff0c;也有非常多的讲究。任意时间到来的请求往往是随机不可控的&#xff0c;…

FLINK SQL时间属性

Flink三种时间属性简介 在Flink SQL中&#xff0c;时间属性是一个核心概念&#xff0c;它主要用于处理与时间相关的数据流。Flink支持三种时间属性&#xff1a;事件时间&#xff08;event time&#xff09;、处理时间&#xff08;processing time&#xff09;和摄入时间&#…

2025 - 中医学基础 - 考研 - 职称

2025 - 中医学基础 - 考研 - 职称 第1章 中医学导论 1.中医学的指导思想是&#xff08;&#xff09;( ) [单选] A&#xff0e;阴阳学说 B&#xff0e;五行学说 C&#xff0e;精气学说 D&#xff0e;整体观念 E&#xff0e;辨证论治 正确答案: D 2.中医学的理论核心是&…

[单master节点k8s部署]37.微服务(一)springCloud 微服务

微服务架构的一个重要特点是&#xff0c;它与开发中使用的具体编程语言或技术栈无关。每个微服务都可以使用最适合其功能需求的语言或技术来实现。例如&#xff0c;一个微服务可以用Java编写&#xff0c;另一个微服务可以用Python、Go、Node.js等编写。微服务架构允许这种灵活性…

gin如何具体利用Server-Send-Events(SSE)实时推送技术实现消息推送

目录 业务场景 解决方案 1. 轮询 2. WebSocket 3. SSE(Server-Send-Events) 代码实现 总结 业务场景 在抖音、美团等APP中&#xff0c;我们经常会遇到APP内部的消息推送&#xff0c;如关注的人的动态消息推送、点赞评论互动消息推送以及算法推荐消息推送。这些场景都是…

数据结构-C语言顺序栈功能实现

栈 栈&#xff1a;类似于一个容器&#xff0c;如我们生活中的箱子&#xff0c;我们向箱子里放东西&#xff0c;那么最先放的东西是最后才能拿出来的 代码实现 #include <stdio.h> #include <stdlib.h>#define MAX_SIZE 100typedef struct {int* base; // 栈底指针…

STM32与ESP32串口数据发送以及网页端数据实时显示和远程遥控

目标&#xff1a;实现网页端速度实时显示以及可以通过点击页面按键达到对小车的位移方位控制。 一、ESP32代码 首先&#xff0c;需要让ESP32连接到WiFi&#xff0c;这样才能为后续的操作做准备。 ssid"xxxxxx" password"xxxxxx"#WIFI连接 def wifi_conn…

题解:牛客小白月赛102(A - C)

A 序列中的排列 题意&#xff1a; 每次给你两个正整数 n , k n,k n,k &#xff0c;并给你一段长度为 n n n 的序列。&#xff08;所有输入均为小于等于100的正整数&#xff09; 问&#xff1a;原序列中是否存在子序列&#xff0c;使得这个子序列是 k k k 的排列 子序列&am…

数据仓库中的维度建模:深入理解与案例分析

数据仓库中的维度建模&#xff1a;深入理解与案例分析 维度建模是数据仓库设计中最常用的一种方法&#xff0c;旨在简化数据访问、提高查询效率&#xff0c;特别适用于需要对数据进行多维分析的场景。本文将深入探讨维度建模的核心概念、设计步骤以及如何将其应用于实际案例中…

通过PyTorch 手写数字识别 入门神经网络 详细讲解

通过PyTorch 手写数字识别 入门神经网络 数据集 MNIST数据集中有手写数字图片7万张&#xff0c;划分训练集6万张&#xff0c;划分测试集1万张。 每张图片都会有一张标签&#xff0c;也就是代表着图片的真实值&#xff08;真实含义&#xff09;。 概念 计算机是如何读取图片的…

基于Android11简单分析audio_policy_configuration.xml

开篇先贴上一个高通的例子&#xff0c;后续基于此文件做具体分析。 1 <?xml version"1.0" encoding"UTF-8" standalone"yes"?> 2 <!-- Copyright (c) 2016-2019, The Linux Foundation. All rights reserved 3 Not a Contribut…

Python保存CSV文件,Excel打开后中文乱码

情况描述 在做多语言文件处理时&#xff0c; 使用 pandas&#xff0c; 并且指定了encoding为 UTF-8&#xff0c; 在 IDE&#xff0c; Sublime等编辑器上查看都显示正常&#xff0c;使用Excel打开非英文字符&#xff0c; 例如汉字&#xff0c; 阿拉伯文&#xff0c; 希伯来文等显…

多态常见面试问题

1、什么是多态&#xff1f; 多态&#xff08;Polymorphism&#xff09;是面向对象编程中的一个重要概念&#xff0c;它允许同一个接口表现出不同的行为。在C中&#xff0c;多态性主要通过虚函数来实现&#xff0c;分为编译时多态&#xff08;静态多态&#xff09;和运行时多态…

【Spring AI】Java实现类似langchain的第三方函数调用_原理与详细示例

Spring AI 介绍 &#xff1a;简化Java AI开发的统一接口解决方案 在过去&#xff0c;使用Java开发AI应用时面临的主要困境是没有统一且标准的封装库&#xff0c;导致开发者需要针对不同的AI服务提供商分别学习和对接各自的API&#xff0c;这增加了开发难度与迁移成本。而Sprin…

【数据结构】邻接表

一、概念 邻接表是一个顺序存储与链式存储相结合的数据结构&#xff0c;用于描述一个图中所有节点之间的关系。 若是一个稠密图&#xff0c;我们可以选择使用邻接矩阵&#xff1b;但当图较稀疏时&#xff0c;邻接矩阵就显得比较浪费空间了&#xff0c;此时我们就可以换成邻接…

机器人的应用 基于5G的变电站智慧管控系统

背景概述 一、电力行业面临的挑战与变革 随着全球工业化和信息化的快速发展&#xff0c;电力行业作为国民经济的基础性行业&#xff0c;其重要性日益凸显。然而&#xff0c;随着电力网络的不断扩展和复杂化&#xff0c;变电站和开关站作为电力传输与分配的关键节点&#xff0…

6、Spring Boot 3.x集成RabbitMQ动态交换机、队列

一、前言 本篇主要是围绕着 Spring Boot 3.x 与 RabbitMQ 的动态配置集成&#xff0c;比如动态新增 RabbitMQ 交换机、队列等操作。二、默认RabbitMQ中的exchange、queue动态新增及监听 1、新增RabbitMQ配置 RabbitMQConfig.java import org.springframework.amqp.rabbit.a…