当前位置: 首页 > news >正文

从零开始:Docker 部署 Milvus 向量数据库并接入 Attu 与 pymilvus 的全流程指南

从零开始:Docker 部署 Milvus 向量数据库并接入 Attu 与 pymilvus 的全流程指南

本文面向所有想在本地、虚拟机或 WSL 上快速搭建 Milvus 的开发者,尤其适合之前尝试失败、需要清理环境后重新来过的同学。
你将获得一份可直接执行的命令清单,以及应对网络、端口、防火墙等常见问题的解决方案。


〇、为什么你需要这篇指南

Milvus 是一个高性能的开源向量数据库,广泛应用于相似性搜索、推荐系统、RAG 等 AI 场景。官方提供了 Docker 独立部署脚本,但因为国内网络环境GitHub 访问不稳定镜像版本标签缺失等问题,很多人在安装时反复报错。

本文将用最稳妥的方式带你完成安装,同时给出 Windows + WSL 2 下的配置建议,并教你使用图形化管理工具Attu和 Python SDKpymilvus


一、动手前:彻底清理前面的失败环境(重要!)

如果你之前按照其他教程操作过,或者安装到一半报错,强烈建议先执行下面的“大扫除”,避免旧容器、错误镜像导致后续步骤异常。

# 停止并删除旧的 milvus 容器dockerstop milvus-standalone2>/dev/nulldockerrmmilvus-standalone2>/dev/null# 删除之前拉取可能失败的镜像dockerrmi milvusdb/milvus:v2.6.22>/dev/nulldockerrmi milvusdb/milvus:v2.4.62>/dev/null# 若还有其他标签,可一并清除:# docker images | grep milvusdb/milvus | awk '{print $3}' | xargs docker rmi -f# 删除安装脚本和自动生成的配置文件rm-fstandalone_embed.sh embedEtcd.yaml user.yaml# 删除持久化数据(⚠️ 这会永久删除你存入的全部数据)rm-rf./volumes# 可选:清理 Docker 系统缓存dockersystem prune-a

确认环境干净后,我们再开始。


二、基础准备:配置 Docker 镜像加速

国内从 Docker Hub 拉取镜像缓慢,甚至超时退出,配置加速器可以一劳永逸。

编辑或新建/etc/docker/daemon.json

sudomkdir-p/etc/dockersudotee/etc/docker/daemon.json<<-'EOF' { "registry-mirrors": [ "https://docker.xuanyuan.me", "https://docker.1ms.run", "https://docker.m.daocloud.io" ] } EOF

重启 Docker 服务:

sudosystemctl daemon-reloadsudosystemctl restartdocker

验证加速器是否生效:

dockerinfo|grep-A5"Registry Mirrors"

三、获取安装脚本并启动 Milvus

3.1 下载脚本(绕过 GitHub 访问限制)

由于raw.githubusercontent.com经常被屏蔽,改用 CDN 地址下载:

curl-sfLhttps://cdn.jsdelivr.net/gh/milvus-io/milvus/scripts/standalone_embed.sh-ostandalone_embed.shchmod+x standalone_embed.sh

若该地址不可用,可以手动创建脚本文件,内容参见文末附录。

3.2 检查并固定镜像版本

脚本默认会拉取官方最新镜像标签,但有时新标签尚未推送到 Docker Hub,导致Unable to find image错误。

查看脚本中写死的镜像版本:

grep-n"MILVUS_IMAGE\|milvusdb/milvus"standalone_embed.sh

如果出现类似v2.6.2这样你确认可用的标签,则无需操作;若看到奇怪的版本号或 want 固定为已知稳定版,执行:

sed-i's|milvusdb/milvus:.*|milvusdb/milvus:v2.6.2|'standalone_embed.sh

(目前v2.6.2已经推送成功,你也可以选择v2.4.6v2.5.0等稳定版本)

3.3 启动 Milvus
bashstandalone_embed.sh start

脚本会自动拉取镜像、创建容器,并等待 90 秒左右让服务初始化。看到“Start successfully.”即表示安装成功。

容器映射的核心端口:

  • 19530:gRPC 服务(SDK 连接用)
  • 9091:WebUI 管理界面
  • 2379:内嵌 etcd(一般无需访问)

四、网络配置:让物理机或宿主机能访问 Milvus

很多同学在云服务器或虚拟机上安装后,发现自己的电脑浏览器打不开 WebUI。下面根据常见场景逐一说明。

4.1 场景 A:使用 WSL 2(Windows 的 Linux 子系统)

WSL 2 会自动将容器端口转发到 Windows 本机,理论上无需额外配置。直接在 Windows 浏览器中访问:

http://localhost:9091/webui/

如果无法访问,多半是Windows 防火墙拦截了 WSL 流量。在 Windows 防火墙中添加入站规则,放行909119530端口即可。

4.2 场景 B:虚拟机 NAT 模式(如 VMware、VirtualBox)

需在虚拟机软件中添加端口转发规则,将宿主机端口映射到虚拟机端口。示例:

名称协议主机 IP主机端口子系统 IP子系统端口
Milvus-gRPCTCP(空)19530(空/127.0.0.1)19530
Milvus-WebUITCP(空)9091(空/127.0.0.1)9091

之后在宿主机浏览器访问http://localhost:9091/webui/

另外,虚拟机自身防火墙(如 firewalld)也要放行这些端口:

sudofirewall-cmd--zone=public --add-port=9091/tcp--permanentsudofirewall-cmd--zone=public --add-port=19530/tcp--permanentsudofirewall-cmd--reload
4.3 场景 C:云服务器

请在该云控制台的安全组中,添加入方向规则,允许 TCP 协议的195309091端口。同时检查系统内防火墙。


五、用 Attu 图形界面管理 Milvus

Attu 是官方出品的可视化工具,可代替命令行完成建库、建集合、测搜索等操作。

5.1 桌面版 Attu(推荐 Windows 用户使用)
  1. 从 Attu Releases 下载 Windows 安装包并安装。
  2. 打开 Attu,连接信息填写:
    • Milvus Address127.0.0.1:19530(若 Milvus 在远程服务器,则填服务器公网 IP)
    • 数据库:留空(默认使用default数据库)
    • 用户名/密码:留空
  3. 点击Connect,即可连接成功。
5.2 Docker 版 Attu(无需安装本地软件)

如果你的 Attu 也需要容器化运行,可执行:

dockerrun-d--nameattu\-eMILVUS_URL=http://host.docker.internal:19530\-p8000:3000\zilliz/attu:v2.6.1

然后浏览器访问http://localhost:8000,连接时地址填host.docker.internal:19530

5.3 集成到 Docker Compose(与 Milvus 统一管理)

如果你使用docker-compose.yml部署了 Milvus,可在services下添加 attu 服务:

attu:container_name:attuimage:zilliz/attu:v2.6.1environment:MILVUS_URL:"standalone:19530"ports:-"8000:3000"depends_on:-standalone

然后docker compose up -d启动。浏览器访问http://localhost:8000,连接地址填standalone:19530


六、用 pymilvus 连接并操作

如果你需要编程管理 Milvus,可以安装 Python SDK:

pipinstallpymilvus

连接示例:

frompymilvusimportconnections connections.connect(host="localhost",port="19530")print("连接成功")

创建数据库、集合等更多操作可参考官方文档或直接在 Attu 中执行。


七、常用运维命令速查

  • 查看容器状态:
    docker ps --filter name=milvus-standalone
  • 查看日志:
    docker logs -f milvus-standalone
  • 停止服务:
    bash standalone_embed.sh stop
  • 重启服务:
    bash standalone_embed.sh restart
  • 删除容器及全部数据(不可恢复):
    bash standalone_embed.sh delete

数据默认保存在脚本所在目录的volumes/milvus中,升级或迁移时请注意保留。


八、升级到新版本

官方脚本提供了内置升级命令:

bashstandalone_embed.sh upgrade

它会自动获取最新脚本和镜像,并重启容器,同时保留原有数据目录。

你也可以手动升级:停止旧容器,拉取新镜像,重新docker run并挂载原数据卷。跨大版本升级前建议查阅官方 Release Notes 确认兼容性。


九、常见问题速查

现象原因解决方法
Unable to find image v2.6.2镜像标签不存在按前述步骤替换为存在的标签,如v2.6.2v2.4.6
拉取镜像超时Docker 加速未生效重新配置/etc/docker/daemon.json并重启 docker
容器反复重启或启动失败端口冲突或权限问题检查docker logs milvus-standalone日志,按提示处理
Attu 连不上127.0.0.1:19530网络不通或防火墙拦截验证端口监听 `ss -tuln
WSL 2 内正常,Windows 浏览器打不开Windows 防火墙阻拦添加入站规则允许端口

十、结尾

至此,你已经拥有了一套完整的本地向量数据库开发环境。无论是作为 RAG 知识库的后端,还是用于语义搜索实验,Milvus 都能提供稳定高效的向量存储与检索能力。


附录:手动创建 standalone_embed.sh 脚本
如果 CDN 下载失败,可以用下面命令直接生成一个稳定版脚本(镜像版本已固定为v2.6.2):

cat>standalone_embed.sh<<'EOF' #!/bin/bash set -e MILVUS_IMAGE="milvusdb/milvus:v2.6.2" CONTAINER_NAME="milvus-standalone" DATA_DIR="./volumes/milvus" start() { if [ "$(docker ps -aq -f name=$CONTAINER_NAME)" ]; then docker start $CONTAINER_NAME else mkdir -p $DATA_DIR && chmod -R 775 $DATA_DIR 2>/dev/null || true docker run -d --name $CONTAINER_NAME \ -p 19530:19530 -p 9091:9091 \ -v $PWD/$DATA_DIR:/var/lib/milvus \ $MILVUS_IMAGE milvus run standalone echo "等待 Milvus 启动(约90秒)..." sleep 90 echo "Milvus 启动成功!" fi } stop() { docker stop $CONTAINER_NAME 2>/dev/null; } delete() { docker rm -f $CONTAINER_NAME 2>/dev/null; rm -rf $DATA_DIR; } case "${1:-}" in start) start ;; stop) stop ;; delete) delete ;; restart) stop; start ;; *) echo "用法: $0 {start|stop|delete|restart}" ;; esac EOFchmod+x standalone_embed.sh
http://www.jsqmd.com/news/727337/

相关文章:

  • Arm CoreLink GIC-600AE中断控制器架构与编程详解
  • FreeMove终极指南:如何高效迁移C盘大文件而不破坏程序功能?
  • PHP修行之路:从零开始学习PHP的终极完整指南
  • python进程和线程(二、主要讲解进程)
  • Sakana!石蒜模拟器物理引擎优化:惯性、衰减与粘性参数的数学原理与调优技巧
  • 别再乱写HLSL了!Unity URP Shader中Core.hlsl的正确打开方式
  • TensorRT 10.0深度学习推理优化与部署实战
  • 通过用量看板观测不同模型调用成本实现精细化预算管理
  • 大模型的短期记忆和长期记忆系统:做 RAG、Agent、知识库前的必修课
  • 物联网开发工具链容器化实践:基于Docker Compose的一站式部署方案
  • 对比直接使用原厂 API 体验 Taotoken 在多模型切换上的便捷性
  • 2026年AI代写泛滥,实测5款论文降AI神器:将AI率从80%拉至15% - 降AI实验室
  • 广东地区650T液态模锻设备厂商排行与选型指南 - 奔跑123
  • Vantage:基于MCP协议构建个人AI记忆中枢,打通AI工具信息孤岛
  • C语言类的基本语法详解
  • ARIMA模型保存与部署实战指南
  • 终极指南:如何用Obsidian Style Settings插件轻松自定义笔记外观
  • 别再只盯着模型结构了!用Python和PyTorch给你的模型推理加上TTA(测试时增强),轻松涨点几个百分点
  • 别乱用滤波!Zygo MetroPro软件里这9种滤波算法,到底该怎么选?(附实战对比图)
  • 终极小说下载解决方案:novel-downloader 深度解析与完全指南
  • 别再只用GO/KEGG了!用R语言做GSEA分析,轻松看懂通路是激活还是抑制
  • 4月30日成都地区包钢产热轧H型钢(1998-Q355B;100-1000mm)批发价格 - 四川盛世钢联营销中心
  • Fast-GitHub技术深度解析:如何实现10倍速的GitHub访问优化
  • Windows热键冲突终极排查指南:快速定位占用快捷键的幕后黑手
  • 终极Android滑动布局解决方案:ConsecutiveScrollerLayout让复杂界面丝滑如流
  • Her自定义请求:5种方式扩展你的API调用
  • 避坑指南:UE动画蓝图状态机变量设置与外部调用的那些事儿
  • 2026年深度改写模式和普通模式效果对比:降AI力度与文本保留度横评
  • 网盘直链下载助手终极指南:八大网盘一键获取真实下载链接,告别限速烦恼
  • 4月30日成都地区重钢产无缝钢管(8163-20#;外径38-114mm)批发价格 - 四川盛世钢联营销中心