解决Milvus官网提供的单机版docker容器无法启动,以及其它容器进程与Milvus容器通信实现方案【Milvus】【pymilvus】【Docker】

文章目录

问题

我的需求是做混合检索单机版可以满足,要走Docker容器部署,还需要和另一个容器中的程序做通信。官方文档提供的Milvus安装启动Milvus方案,见文档:传送门

我在开始这里就挂了,

bash 复制代码
bash standalone_embed.sh start

创建的容器无法启动,可能和我的本地docker有关。

预备知识

先了解一个预备知识哈,有没有向我一样是从GitHub上的pymilvus慕名而来的,这个pymilvus的定位是一个SDK(Software Development Kit),是个工具,它需要搭配一个Milvus实例,也就是Milvus服务器,总结,使用过程需要的组合:

  • milvus SDK(本文的pymilvus)
  • Milvus服务器(本文的Milvus容器)

另外,Docker容器和宿主机本身在同一个内网中,本身是可以互相通信的,你能在内网中找到两者的ip。

方案

我的时空中(2024-04),目前最新版milvus2.4.0

获取pymilvus

bash 复制代码
pip install pymilvus
pip install pymilvus[model]

第二个指令可选,我需要bge-m3,所以也装了,官方文档有介绍,这里过了哈。

获取milvus 实例

通过docker-compose + xxx.yml文件实现

bash 复制代码
wget https://github.com/milvus-io/milvus/releases/download/v2.4.0/milvus-standalone-docker-compose.yml -O docker-compose.yml

sudo:docker-compose up -d

小插曲

如果你和我一样,执行docker-compose up -d,报这种错,

试试这样解决:

bash 复制代码
sudo apt  install docker-compose

多容器通信

我的场景是,Milvus实例本身独占一个容器containtorA,我的混合检索程序在另一个容器containtorB,检索程序需要向指定端口(默认Port:19530)发送请求,这个请求需要Milvus实例去处理。所以这是个容器通信问题?

是也不是,本质是容器和宿主机通信 ,具体来说,容器A内的应用程序向宿主机的端口发送请求,而这个端口被容器B监听,间接地完成了容器A、B间的通信。也就是说,容器间的直接通信方案有时候也可以通过间接通信实现。

我这里的间接通信是这样实现的,在pymilvus 相关程序的请求中这样填写(ifconfig一下),

bash 复制代码
connections.connect("default", host="<宿主机IP地址>", port="19530")

最后结果是有三个容器在运行

去宿主机上查看Milvus监听状态

相关推荐
工业一体机老司机1 小时前
Docker部署工控机采集服务 Compose编排与开机自启
运维·docker·容器
miaobinfei7 小时前
docker拉取dify镜像,执行docker compose up -d 报错
运维·docker·容器
kobe_OKOK_8 小时前
docker compose命名卷 映射到宿主机的路径
运维·docker·容器
晨陌y13 小时前
Flare自托管导航页教程:Docker部署、多用户、API与公网访问
运维·docker·容器
梅孔立15 小时前
Docker 容器网络不通:Tomcat 无法解析 MySQL、Nginx 无法反代 Tomcat 的生产级排查与治理
网络·docker·tomcat
螺蛳粉 螺蛳粉1 天前
第 05 篇:etcd 深入:Raft 共识、watch 机制与快照备份恢复实战(底座认知 05)
docker·云原生·容器·kubernetes·etcd·分布式存储·kube-apiserver
PellyKoo1 天前
【docker】cifs卷改smb密码后容器起不来的解决方法
运维·docker·容器
时早玖沐1 天前
放弃 QQ 官方机器人:用 SnowLuma + AstrBot 自建 QQ 机器人
docker·开源·agent
阿标在干嘛1 天前
容器编排的“场景适配”:我们为什么在部分服务中回归了Docker Compose?
运维·docker·容器
IT19951 天前
Docker 快速部署 DM8 达梦数据库|完整踩坑笔记
笔记·docker·容器