本地 docker 部署 milvus 教程

发布时间:2026/7/29 21:51:51
本地 docker 部署 milvus 教程 ①Ollama 和 Milvus 介绍一句话区分Ollama 在本地跑大模型的工具负责理解、生成文字觅微思 Milvus 向量数据库负责存储知识库、做语义检索二者经常搭配搭建本地私有知识库问答RAG。国内最流行、开源友好、分布式、支持百亿级向量配套生态Ollama Milvus 标准私有 RAG 方案一、Ollama定义开源工具一键在电脑/服务器离线运行各类开源大模型Qwen千问、Llama3、DeepSeek、BGE嵌入模型等。类比大模型界的「Docker」帮你省去CUDA、推理框架、量化配置一堆麻烦。核心能力一条命令下载、启动模型ollama pull qwen2.5:7b ollama run qwen2.5:7b默认开启11434HTTP API程序可以调用两类模型都支持对话大模型聊天、写代码、总结文档Embedding嵌入模型把一段话转换成一串数字向量交给Milvus检索。适合场景不想把公司文档、私密数据发给GPT云端离线搭建本地AI助手、私有知识库。二、Milvus定义开源高性能向量数据库专门存放「文本/图片转出来的向量」快速做相似度搜索。MySQL适合按关键词精确查找Milvus适合语义相似查找。先搞懂向量Embedding一段文字 → Ollama嵌入模型 → 一串数字向量。意思相近的文本向量在空间上距离很近。例“Java如何处理事务” 和 “Spring事务管理” → 向量接近可以被搜出来传统关键词搜索很难识别这种语义关联。Milvus核心能力存储百万/亿级向量毫秒级相似检索支持过滤、分区、分布式集群可上生产环境。通俗例子你上传1000份内部开发文档Ollama把每段文档转为向量向量存入Milvus用户提问Spring事务失效场景Ollama把用户问题也转为向量Milvus找出向量最接近的几段文档原文把原文交给对话大模型基于真实文档回答减少AI“幻觉”。三、经典组合Milvus OllamaRAG知识库完整流程文档切片 →Ollama(embedding模型)→ 向量向量原文存入Milvus用户提问问题向量化Ollama→ Milvus检索相关片段检索结果拼接进提示词 →Ollama对话模型生成答案四、简单对比工具角色输入输出Ollama模型运行引擎文本 → 回答 / 文本 → 向量Milvus向量存储搜索引擎向量 → 相似文档片段相近工具轻量向量库Chroma、FAISS开发测试用不适合大规模生产Milvus面向正式项目、大数据量。同类本地模型工具LM Studio、GPT4AllOllama生态最成熟、API友好后端开发首选。如果你需要我可以给一份Python最简DemoOllama生成向量 Milvus实现本地文档问答。②docker生活化比喻讲解先记住一条主线镜像安装包容器正在运行的软件docker run临时启动docker-compose批量启动管理器1、两个核心概念 镜像(image) 绿色版软件安装包Windows里QQ安装包、微信exe安装文件Docker里milvusdb/milvus:v2.5.6就是Milvus的完整安装包特点只读不能改存放在电脑磁盘上docker pull xxx 网上下载安装包你刚才中断下载就是下载这个安装包。 容器(container) 正在运行的软件窗口Windows比喻你双击QQ安装包 → QQ软件打开运行Docker比喻拿镜像启动 → 生成容器关键点从同一个镜像可以启动无数个独立容器容器一旦删除里面的数据默认全部消失docker ps查看当前正在运行的所有软件容器通俗区分镜像安装包躺在硬盘容器打开运行的程序内存里跑2、什么是数据卷-v你之前踩坑关键点默认情况下容器内部产生的数据只存在容器内部。容器删掉数据直接清空。-v 本地路径:容器内路径作用把容器里的数据同步保存到你WSL本地文件夹比喻游戏默认存档存在软件内部做了映射存档保存到你自己的文件夹卸载游戏存档不会丢。⚠️ 你的大坑提醒不要映射Windows文件夹/mnt/c给MilvusWSL读写容易崩溃数据文件夹放WSL内部。3、docker run 命令是什么dockerrun[各种参数]镜像名含义单独启动1个容器缺点如果一个项目需要同时跑3个软件Milvus Etcd MinIO你要敲3条很长的run命令还要手动控制启动顺序记一堆参数非常麻烦。这就是你最开始的启动方式只启动Milvus一个程序使用内置etcd然后WSL兼容问题崩溃。4、重头戏docker-compose.yml 到底是什么一句话定义一个记事本文件把多个容器的启动参数全部写在文件里面。一条命令统一启动、统一关闭。生活化例子你开一家奶茶店需要同时运行制冰机、咖啡机、冰箱。docker run单独去开关每一台机器记住每台机器的设置docker-compose.yml一张清单写清楚三台机器所有参数。执行docker compose up -d→ 一次性全部开机执行docker compose down→ 一次性全部关机回到我们Milvus场景Milvus标准部署必须同时跑3个程序etcd配置中心保存元数据minio文件存储存放向量原始数据milvus主程序向量数据库如果不用compose你需要手写3条超级长的docker run还要保证启动顺序非常容易出错。写进yml文件后只需要一条命令启动全部组件。yml文件能干什么指定要用哪个镜像设置端口映射外部程序能访问Milvus19530端口设置数据持久化目录设置环境变量内存大小、账号相关配置设置依赖顺序先启动etcd、minio最后启动milvus5、两条最常用compose命令死记这两个# 根据yml文件后台启动所有容器dockercompose up-d# 停止所有容器数据还在文件夹里不会删除dockercompose down6、把两种部署方案对比看懂为什么推荐compose方案方案Adocker run 嵌入式etcd你最先用的只启动Milvus一个容器Milvus内部自带一个迷你etcd。✅ 命令短简单❌ WSL系统有兼容性bug → 进程崩溃你遇到的134错误方案Bdocker-compose三组件独立部署我们准备使用etcd、minio、milvus 各自独立容器运行✅ 规避嵌入式etcd崩溃bug标准生产部署方式稳定❌ 需要同时运行3个容器占用资源略多7、完整链路串起来逻辑闭环docker pull下载镜像安装包编写docker-compose.yml写好启动配置清单docker compose up -d根据清单使用镜像创建并启动3个容器软件运行外部Python/Java代码 → 访问 127.0.0.1:19530 → 连接Milvus容器docker compose logs -f standalone实时查看milvus运行日志排查报错docker compose down停止所有容器软件关闭硬盘数据保留8、新手高频误区汇总避坑❌ 删除镜像删除容器✅ 镜像安装包容器运行程序。停止容器不会删掉镜像❌ 容器停止数据丢失✅ 只要配置-v数据卷映射数据保存在本地文件夹不会丢❌ yml随便换行、乱加空格✅ yml格式对缩进极其严格复制我给你的完整文本不要手动乱改排版❌ latest镜像最稳定✅ latest是最新版本经常有bug生产/调试锁定固定版本例如v2.5.6③用 Docker 部署重要提前说明你要求 Milvus 使用latest我配置里直接写milvusdb/milvus:latest⚠️ 再次提醒latest 可能是测试版有概率不稳定如果后续还崩溃建议改成v2.5.6etcd、minio 使用稳定固定版本全部文件放在WSL Linux内部目录不要放到/mnt/cWindows磁盘第一步一键生成 docker-compose.yml直接复制整条命令运行catdocker-compose.ymlEOF version: 3.5 services: etcd: image: quay.io/coreos/etcd:v3.5.12 container_name: milvus-etcd volumes: - ./etcd:/etcd-data environment: - ETCD_AUTO_COMPACTION_MODErevision - ETCD_AUTO_COMPACTION_RETENTION1000 - ETCD_QUOTA_BACKEND_BYTES4294967296 command: etcd -name milvus-etcd -data-dir/etcd-data --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls http://0.0.0.0:2380 ports: - 2379:2379 minio: image: minio/minio:RELEASE.2024-05-10T01-41-38Z container_name: milvus-minio volumes: - ./minio:/minio-data environment: MINIO_ROOT_USER: minioadmin MINIO_ROOT_PASSWORD: minioadmin command: minio server /minio-data --console-address :9001 ports: - 9000:9000 - 9001:9001 standalone: image: milvusdb/milvus:latest container_name: milvus-standalone command: milvus run standalone volumes: - ./milvus_data:/var/lib/milvus environment: - ETCD_ENDPOINTSetcd:2379 - MINIO_ADDRESSminio:9000 - MINIO_ACCESS_KEY_IDminioadmin - MINIO_SECRET_ACCESS_KEYminioadmin - QUERYNODE_CACHE_LIMIT1GB - DATANODE_MEMORY_LIMIT1GB ports: - 19530:19530 - 9091:9091 depends_on: - etcd - minio EOF操作步骤在WSL终端新建一个干净文件夹不要中文mkdir~/milvus-fullcd~/milvus-full完整复制上面一大段cat … EOF命令粘贴回车自动生成docker-compose.yml不用手动新建文件粘贴避免缩进错误。第二步全套使用教程新手照着敲1、启动所有服务dockercompose up-d-d 后台静默运行第一次执行自动下载 etcd、minio、milvus latest 三个镜像下载完自动启动3个容器显示这种代表成功了2、查看是否启动成功dockerps✅正常结果列表同时出现3个容器milvus-etcd、milvus-minio、milvus-standalone⚠️ Milvus启动慢容器显示Up之后等待40~60秒程序才能连接。3、实时查看Milvus日志排查崩溃必用dockercompose logs-fstandalone按CtrlC退出日志查看4、停止服务容器关闭数据保留dockercompose down5、停止并且清空所有数据测试重置环境谨慎使用dockercompose down-v-v会删除持久化数据向量全部清空正式环境不要随便执行。第三步连接信息固定不变程序SDK连接地址127.0.0.1:19530Web可视化面板http://127.0.0.1:9091/webui/账号root密码Milvus④可视化工具链接Mylvus安装 Attu 桌面客户端下载地址https://github.com/zilliztech/attu/releasesWindows 选择 Attu.Setup-x.x.x.exe连接参数Endpoint127.0.0.1:19530用户名root密码Milvus