大家好,我是老赵,一名程序员老兵,平时主要从事企业级应用开发,最近打算从零学习、并落地一套完整的RAG检索增强生成系统。不搞虚头理论,全程边学边做,把遇到的问题、踩过的坑、能直接跑通的代码,全都真实记录下来。
昨天,我们基于Miniconda搭建了RAG专属开发环境(rag-env),今天继续实战——用Docker部署Milvus向量数据库。
全程不搞理论,只记实战操作、真实踩坑和可复制代码,和昨天一样,边做边更,适合想从零落地RAG的开发者。后续会持续更新,最终整理成完整教程 + 源码 + 部署手册。
一、今日目标
- 确认Docker环境可用(补充Docker基础检查);
- 用Docker拉取Milvus镜像,部署单节点Milvus服务(适配新手);
- 验证Milvus服务启动成功,能正常连接;
- 记录部署过程中的坑(新手必踩)及解决方案;
- 关联第一天的Miniconda环境,确保后续能通过pymilvus连接Milvus。
二、前置准备(必做,避免踩坑)
-
环境前提:已激活Miniconda的rag-env环境(终端前缀显示(rag-env)),若未激活,执行命令:
conda activate rag-env; -
Docker前提:电脑已安装Docker,确保Docker服务正常启动;
-
版本约定(稳定兼容,不追新):
- Docker:29.0.0+(无需刻意升级,能正常拉取镜像即可);
- Milvus:v2.6.9(和第一天安装的pymilvus==2.6.9版本完全匹配,避免连接失败)
- Milvus镜像源:使用国内镜像,解决拉取失败的问题。
三、Docker部署Milvus步骤(实战实操,可直接复制命令)
1. 检查Docker环境(关键,避免后续启动失败)
先执行以下命令,确认Docker服务正常运行、能拉取镜像:
# 检查Docker版本(确认安装成功)
docker --version
# 检查Docker服务状态(Windows/Mac可直接看Docker客户端,终端执行以下命令也可)
docker info
# 拉取一个测试镜像(验证网络能正常访问Docker仓库)
docker pull hello-world
# 运行测试镜像(确认Docker能正常启动容器)
docker run hello-world
✅ 若所有命令都正常执行,无报错,并获得如下所示的输出,说明Docker环境可用。
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://hub.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/get-started/
2. 拉取Milvus v2.6.9镜像
# 拉取Milvus v2.6.9镜像(适配pymilvus==2.6.9)
docker pull milvusdb/milvus:v2.6.9
# 拉取完成后,查看镜像(确认拉取成功)
docker images
✅ 拉取成功后,终端会显示milvus镜像的信息tag为v2.6.9。
3. 下载Windows平台下Milvus的安装脚本
访问Milvus官网:milvus.io/docs/instal…,根据说明下载standalone_embed.bat脚本,或者直接访问raw.githubusercontent.com/milvus-io/m…下载
打开下载的bat文件,修改其中的milvus版本为2.6.9,如下图所示:
4. 启动Milvus容器(核心命令,一键启动)
打开cmd进入standalone_embed.bat所在目录,执行以下命令:
.\standalone_embed.bat start
四、今天踩的坑(90%新手必踩,真实实录)
Docker拉取Milvus镜像失败/拉取速度极慢(最常见)
问题
执行 docker pull milvusdb/milvus:v2.6.9时, Docker拉取失败,提示下图中的错误:
原因
Milvus官方镜像仓库在国外,国内网络访问有问题
最终可用解决方案
配置Docker国内镜像源(永久生效,后续拉取任何镜像都更快):
- Windows:打开Docker客户端 → 设置 → Docker Engine → 在“registry-mirrors”中添加国内源,保存后重启Docker:
{
"registry-mirrors": [
"https://docker.xuanyuan.me",
"https://docker.1ms.run",
"https://docker-0.unsee.tech",
"https://docker.m.daocloud.io",
"https://registry.docker-cn.com"
]
}
五、验证Milvus部署成功 + 关联Miniconda环境(关键步骤,必做)
部署完成后,一定要验证2件事:Milvus服务正常运行、Miniconda的rag-env环境能通过pymilvus正常连接,为后续RAG开发铺路。
1. 验证Milvus容器正常运行
# 查看容器状态(确保状态为Up)
docker ps
# 查看Milvus日志(确认服务初始化完成,无报错)
docker logs -f milvus-standalone
2. 验证pymilvus连接Milvus(关联rag-env环境)
- 确保已激活rag-env环境(终端前缀显示(rag-env));
- 打开Python交互环境:
python; - 执行连接代码(直接复制):
# 导入pymilvus(第一天已安装)
from pymilvus import connections, utility
# 连接Milvus服务(localhost对应本地部署,port=19530)
connections.connect(
alias="default", # 连接别名,后续可直接使用
host="localhost",
port="19530")
# 验证连接是否成功(打印Milvus版本)
print("Milvus 版本:", utility.get_server_version())
# 关闭连接(可选,后续开发可保持连接)
connections.disconnect("default")
3. 验证成功的输出示例
Milvus 版本: 2.6.9
✅ 无任何报错,且打印出Milvus版本(和我们部署的v2.6.9一致),说明连接成功,Miniconda环境和Milvus已正常关联。
4. 验证失败的快速解决
- 报错“connect failed”:请检查服务是否启动,端口是否暴露;
- 报错“ModuleNotFoundError: No module named 'pymilvus'”:说明未在rag-env环境中安装pymilvus,重新执行:
pip install pymilvus==2.6.9 -i https://pypi.tuna.tsinghua.edu.cn/simple`
- 报错“version mismatch”:说明Milvus版本和pymilvus版本不匹配,确保两者都是2.6.9。
六、Docker + Milvus高频命令(新手必记,后续常用)
# 查看Milvus容器状态
docker ps
# 启动Milvus容器
docker start milvus-standalone
# 停止Milvus容器
docker stop milvus-standalone
# 重启Milvus容器
docker restart milvus-standalone
# 查看Milvus日志(排查问题必备)
docker logs -f milvus-standalone
# 删除Milvus容器(如需重新部署,删除后重新执行启动命令)
docker rm -f milvus-standalone
# 查看Milvus镜像
docker images
七、明日计划
基于今天部署的Milvus向量数据库,实现「文档加载 + 文本向量化」—— 把本地文档(如TXT、PDF)加载到系统,用bge-small-zh模型将文本转化为向量,再存入Milvus,完成RAG的核心数据准备步骤,继续实战踩坑。
我是老赵,一名程序员老兵,全程真实记录RAG从零搭建全过程。本系列会持续更新,最后整理成完整视频教程+源码+部署手册。
关注 老赵全栈实战,不迷路,一起从0落地RAG系统,避开所有新手坑。