快速部署Milvus 2.6.4单机版向量数据库(Docker Compose方式)
Milvus是一款开源的云原生向量数据库,专为海量向量数据的高效存储、检索和分析设计。本文将基于提供的Docker Compose配置,手把手教你快速部署Milvus 2.6.4单机版,零门槛上手向量数据库。
一、部署前置条件
在开始部署前,请确保你的服务器满足以下条件:
- 操作系统:Linux(本文以Ubuntu为例,CentOS/Deepin等发行版操作类似)
- 已安装Docker和Docker Compose:
- Docker版本 ≥ 20.10
- Docker Compose版本 ≥ 1.29
- 服务器资源:建议至少2核4G内存(单机测试可1核2G,生产环境需更高配置)
- 端口占用检查:确保9000、9001、19530、9091端口未被占用
二、部署步骤
1. 环境准备(若未安装Docker)
如果服务器尚未安装Docker,可执行提供的快速安装脚本(install_docker_fast.sh),或手动执行以下命令:
bash
# 卸载旧版本(可选)
sudo apt-get remove docker docker-engine docker.io containerd runc
# 设置仓库
sudo apt-get update
sudo apt-get install -y ca-certificates curl gnupg lsb-release
# 添加Docker官方GPG密钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# 设置稳定版仓库
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 安装Docker Engine
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 启动并设置开机自启
sudo systemctl start docker
sudo systemctl enable docker
# 验证安装
docker --version
docker compose version
2. 目录与文件准备
已存在~/milvus目录,且包含以下核心文件,无需额外创建:
~/milvus/
├── docker-compose.yml # Milvus核心部署配置
├── embedEtcd.yaml # Etcd嵌入式配置(备用)
├── install_docker_fast.sh # Docker快速安装脚本
├── standalone_embed.sh # 嵌入式启动脚本(备用)
├── user.yaml # 用户配置(备用)
└── volumes/ # 数据持久化目录(自动挂载)
3. 启动Milvus服务
进入Milvus部署目录,执行启动命令:
bash
# 进入部署目录
cd ~/milvus
# 启动Milvus(后台运行)
docker compose up -d
# 查看容器启动状态
docker compose ps
预期输出
启动成功后,docker compose ps会显示3个容器状态均为Up (healthy):
NAME COMMAND SERVICE STATUS PORTS
milvus-etcd "etcd -advertise-clie..." etcd Up (healthy) 2379/tcp, 2380/tcp
milvus-minio "minio server /minio_..." minio Up (healthy) 0.0.0.0:9000->9000/tcp, 0.0.0.0:9001->9001/tcp
milvus-standalone "/tini -- milvus run ..." standalone Up (healthy) 0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp
4. 验证Milvus服务可用性
通过健康检查接口验证服务是否正常:
bash
# 检查Milvus健康状态
curl http://localhost:9091/healthz
# 检查MinIO健康状态
curl http://localhost:9000/minio/health/live
# 检查Etcd健康状态
docker exec milvus-etcd etcdctl endpoint health
成功标识
- Milvus健康检查返回:
OK - MinIO健康检查返回JSON格式的健康状态
- Etcd健康检查返回:
{"health":"true"}
三、核心配置说明
1. 端口说明
| 端口 | 用途 | 访问方式 |
|---|---|---|
| 9000 | MinIO对象存储服务端口 | 数据存储访问 |
| 9001 | MinIO控制台端口 | 浏览器访问http://服务器IP:9001 |
| 19530 | Milvus核心服务端口 | 客户端连接向量数据库 |
| 9091 | Milvus健康检查端口 | 服务状态监控 |
2. 数据持久化
volumes目录挂载了3个核心组件的数据目录,确保容器重启后数据不丢失:
volumes/etcd:Etcd元数据存储volumes/minio:MinIO向量数据存储volumes/milvus:Milvus运行时数据
3. 关键环境变量
ETCD_ENDPOINTS:Milvus连接Etcd的地址(内部网络)MINIO_ADDRESS:Milvus连接MinIO的地址(内部网络)MQ_TYPE: woodpecker:Milvus内置消息队列(单机版无需额外部署MQ)
四、常用运维命令
1. 停止Milvus服务
bash
cd ~/milvus
docker compose down
2. 查看Milvus日志
bash
# 查看所有组件日志
docker compose logs -f
# 仅查看Milvus核心日志
docker compose logs -f standalone
# 查看Etcd日志
docker compose logs -f etcd
3. 重启Milvus服务
bash
cd ~/milvus
docker compose restart
4. 清理Milvus数据(谨慎操作)
bash
# 停止服务
docker compose down
# 删除数据目录(会清空所有向量数据)
rm -rf ~/milvus/volumes/*
# 重新启动
docker compose up -d
五、常见问题排查
1. 容器启动后状态为unhealthy
- 原因:服务启动需要时间(Milvus首次启动约1-2分钟),或资源不足
- 解决:等待90秒后重新检查,或升级服务器配置(至少2核4G)
2. 端口被占用
- 查看端口占用:
netstat -tulpn | grep 端口号(如netstat -tulpn | grep 19530) - 解决:修改
docker-compose.yml中的端口映射(如19531:19530)
3. MinIO控制台登录失败
- 默认账号密码:
minioadmin/minioadmin - 若修改过密码,需同步修改
docker-compose.yml中的MINIO_ACCESS_KEY和MINIO_SECRET_KEY
六、下一步操作
- 客户端连接 :可使用Python/Java/Go SDK连接Milvus(地址:
服务器IP:19530) - 数据操作:创建向量集合、插入向量数据、执行相似性检索
- 生产环境优化 :
- 调整Etcd/MinIO/Milvus的资源限制(内存、CPU)
- 配置持久化存储(如挂载云盘)
- 开启监控(Prometheus + Grafana)
总结
- Milvus 2.6.4单机版可通过Docker Compose一键部署,核心依赖Etcd(元数据)、MinIO(数据存储)和Milvus核心服务;
- 部署关键是确保Docker环境正常、端口未被占用,启动后通过健康检查接口验证服务可用性;
- 数据持久化依赖
volumes目录,运维时注意备份该目录以防止数据丢失。
通过本文的步骤,你可以快速搭建一个可用的Milvus向量数据库环境,满足小规模向量检索场景的需求。