基于Docker Desktop和Windows的Milvus本地部署教程
前言
随着人工智能与大数据应用的快速发展,向量数据库在图像检索、语义搜索、推荐系统等场景中发挥着越来越重要的作用。Milvus 作为当前最流行的开源向量数据库之一,能够高效地存储、索引和检索海量向量数据,并且具备良好的可扩展性与生态支持。
对于希望在个人电脑上进行实验与开发的研究人员和开发者来说,本地快速搭建一个可用的 Milvus 环境至关重要。在 Windows 平台上,借助 Docker Desktop 可以轻松地运行 Milvus 的官方容器镜像,避免了复杂的环境依赖问题,同时保持与生产环境一致的运行方式。
本教程将详细介绍如何在 Windows + Docker Desktop 环境下部署 Milvus Standalone,并演示如何通过 Python SDK 进行连接与测试。教程目标是让读者能够在本地完成从 环境准备 → 服务启动 → SDK 连接 → 简单向量操作 的完整流程,为后续的算法研究与系统开发打下坚实基础。
1.下载Docker Desktop
Docker: Accelerated Container Application Development
点击以上链接进入docker官网,选择AMD64版本进行下载
2.安装Docker Desktop
在下载路径找到安装包:
点击后直接ok即可,安装完成后重启电脑。
3.安装WSL(必须)
正常来讲,安装docker desktop会触发WSL自动安装的命令行窗口,但是由于很多种原因,会导致自动安装失败,因此我们选择手动安装:
https://github.com/microsoft/WSL/releases
点击上述链接进入WSL的版本发布网页,并找到x86版本进行下载。
找到下载好的msi文件,点击自动进行安装:
安装好后重启docker。
4.下载Docker Desktop汉化包(非必须)
https://github.com/asxez/DockerDesktop-CN/releases
点击上述链接,进入汉化包版本发布界面,选择Windows版本:
下载好后,将文件名重命名为app.asar
进入Docker Desktop安装路径,默认为:
C:\Program Files\Docker\Docker\frontend\resources
将改好的文件替换掉app.asar,此图中是保留原先的app.asar为app_old.asar
5.部署Milvus Standalone版
建立一个自己准备存储数据的文件夹,本文示例为:
E:\Milvus_data
以管理员身份打开Windows power shell(必须是power shell,否则命令不同)
执行以下代码,为Milvus创建配置文件:
E:
cd E:\Milvus_data
Invoke-WebRequest https://github.com/milvus-io/milvus/releases/download/v2.6.0/milvus-standalone-docker-compose.yml -OutFile docker-compose.yml
执行以下代码,使用docker创建数据库:
docker compose up -d
等待内容下载完成后,docker desktop上会显示我们的数据库服务器:
6.测试Milvus
点击启动数据库服务器:
http://localhost:9091/healthz
复制以上链接用浏览器打开,查看数据库是否正常运行(健康性)
使用python进行连接测试):
在python环境中安装milvus支持包
pip install pymilvus
from pymilvus import connections, utility# 连接到 Milvus
connections.connect(host="127.0.0.1", port="19530")# 列出所有集合
print("All collections:", utility.list_collections())
如果没有报错,会输出集合为:[] ,也就是空的,说明可以访问和操作。
7.同局域网访问Milvus
在Windows power shell 输入:
ipconfig
找到路由器分配的IPv4地址,注意必须是 以太网适配器 中的IPv4地址
将此地址复制,录入脚本:
from pymilvus import connections, utility# 把 host 改成宿主机的局域网 IP
connections.connect(host="10.105.8.11", port="19530")print("Collections:", utility.list_collections())
注意放行端口才能提供外部访问:
netsh advfirewall firewall add rule name="Milvus gRPC" dir=in action=allow protocol=TCP localport=19530
netsh advfirewall firewall add rule name="Milvus HTTP" dir=in action=allow protocol=TCP localport=9091
运行效果同本地运行一样,但是这种方法支持局域网其他电脑访问本地的Milvus服务器(前提是docker desktop里面要保持Milvus的运行)