【大模型RAG】Docker 一键部署 Milvus 完整攻略

news2025/6/12 19:11:14

本文概要

Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面从环境准备、Docker 安装、容器启动、数据持久化、防火墙与安全组配置到客户端连接与常见故障排查,一步到位地给出完整操作指引,并汇总常见陷阱及修复方案。


1 环境准备

1.1 系统与硬件要求

Milvus 2.5 官方推荐 x86-64/ARM64 的 Ubuntu、CentOS、Debian 等 64 位发行版,并至少 2 GB RAM、10 GB 磁盘;生产环境建议 ≥8 GB RAM 及 SSD 存储。

1.2 安装 Docker Engine 及常用插件 环境并配置腾讯云镜像

# 卸载旧版(可选)
sudo apt remove docker docker-engine docker.io containerd runc -y

# 1. 更新本地 apt 索引,确保使用最新的包列表  
sudo apt-get update                             #  Refresh the list of available packages and their versions  [oai_citation:0‡bbs.fit2cloud.com](https://bbs.fit2cloud.com/t/topic/5896?utm_source=chatgpt.com)  

# 2. 安装 HTTPS 传输和下载工具  
sudo apt-get install -y ca-certificates curl     #  安装 SSL 证书支持(ca-certificates)和网络下载工具(curl) [oai_citation:1‡cloud.tencent.com](https://cloud.tencent.com/developer/article/2439720?utm_source=chatgpt.com)  

# 3. 创建存放 GPG 公钥的目录  
sudo install -m 0755 -d /etc/apt/keyrings        #  创建 /etc/apt/keyrings 目录,并设置权限为 0755(用户可读写执行、组和其他可读执行) [oai_citation:2‡cloud.tencent.com](https://cloud.tencent.com/developer/article/2439720?utm_source=chatgpt.com)  

# 4. 从腾讯云镜像下载 Docker 官方 GPG 公钥  
sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg \
  -o /etc/apt/keyrings/docker.asc                #  -f:遇 HTTP 错误时退出;-s:静默模式;-S:显示错误;-L:跟随重定向;将公钥保存到 /etc/apt/keyrings/docker.asc  [oai_citation:3‡cloud.tencent.com](https://cloud.tencent.com/developer/article/2297462?utm_source=chatgpt.com)  

# 5. 赋予公钥文件可读权限  
sudo chmod a+r /etc/apt/keyrings/docker.asc      #  让所有用户都可读取此公钥,以便 apt 在执行安装时进行签名验证 [oai_citation:4‡cloud.tencent.com](https://cloud.tencent.com/developer/article/2297462?utm_source=chatgpt.com)  

# 6. 添加腾讯云 Docker APT 仓库  
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] \
  https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu \
  $(. /etc/os-release && echo \"\$VERSION_CODENAME\") stable" \
  | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null  
#  - arch=$(dpkg --print-architecture):自动填入系统架构(如 amd64)  
#  - signed-by:指定使用上述下载的 GPG 公钥验证包签名  
#  - $(. /etc/os-release && echo "$VERSION_CODENAME"):读取 Ubuntu 发行代号(如 jammy) [oai_citation:5‡cloud.tencent.com](https://cloud.tencent.com/developer/article/2297462?utm_source=chatgpt.com)  

# 7. 刷新 apt 索引以加载腾讯云镜像源  
sudo apt-get update                             #  再次下载所有源的包列表,包括新添加的腾讯云源 [oai_citation:6‡bbs.fit2cloud.com](https://bbs.fit2cloud.com/t/topic/5896?utm_source=chatgpt.com)  

# 8. 安装 Docker Engine 及常用插件  
sudo apt-get install -y \
  docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin  #  一次性安装 Docker 引擎(docker-ce)、命令行工具(docker-ce-cli)、容器运行时(containerd.io)、Buildx 插件和 Compose 插件 [oai_citation:7‡docs.docker.com](https://docs.docker.com/engine/install/ubuntu/?utm_source=chatgpt.com)  

官方文档对 Ubuntu 24.04/22.04/20.04 的步骤完全一致。

 

sudo systemctl start docker 启动 Docker 服务
sudo systemctl status docker  查看 Docker 是否正在运行

 验证docker:      sudo docker run hello-world

输出如下即正常

 


2 安装docker-compose

Ubuntu 和 Debian 系统执行:

sudo apt-get update
sudo apt-get install docker-compose-plugin

验证docker compose : sudo docker compose version  

 


2.2 Docker Compose安装Milvus一键编排 

Docker Compose 是 Docker 官方提供的多容器编排工具,将多个服务(如 Milvus、etcd、MinIO)及其依赖通过一个 YAML 文件统一定义和管理。

官方:(可能无法访问)

wget https://github.com/milvus-io/milvus/releases/download/v2.5.1/milvus-standalone-docker-compose.yml -O docker-compose.yml
docker compose up -d

国内镜像:

# 方法一:Gitee 原始文件
wget https://gitee.com/milvus-io/milvus/raw/2.5/deployments/docker/standalone/docker-compose.yml \
  -O docker-compose.yml

 即是将官方发布的编排文件 milvus-standalone-docker-compose.yml 下载并保存为 docker-compose.yml。

验证: 有文件即可 

一键启动所有服务 

sudo docker compose up -d


	•	-d 表示后台运行,compose 将根据 docker-compose.yml 启动以下容器:
	•	milvus-etcd(2379/TCP)
	•	milvus-minio(9000/TCP、9001/TCP)
	•	milvus-standalone(19530/TCP gRPC、9091/TCP HTTP/WebUI)
  • 会以守护模式(-d)读取当前目录下的 docker-compose.yml,并一键拉起所有定义的容器实例(包括 Milvus Standalone、etcd(元数据存储)和 minio(对象存储) 等)。

 

查看运行状态

sudo docker compose ps

确认所有服务均为 Up (healthy) 状态。

 


2.3 数据持久化与备份

Milvus 的向量、索引、WAL 默认存于 /var/lib/milvus;映射到主机目录即可持久化。

生产环境可替换为 Ceph / MinIO / S3;官方文档对对象存储路径也有说明。
  • -v $HOME/milvus_data:/var/lib/milvus (启动命令已经包含了)

  • 将容器内部的 /var/lib/milvus 映射到宿主机的 $HOME/milvus_data。

  • 即默认会在当前文件下创建一个volumes 文件夹作为数据存放地址

如何修改宿主机数据存放路径:


3 远程访问与防火墙配置

3.1 开放 Linux 防火墙

UFW(Ubuntu)

sudo ufw allow 19530/tcp
sudo ufw allow 9091/tcp
sudo ufw reload
sudo ufw status
若部署在云服务器(Alibaba Cloud、AWS、GCP 等),在 安全组 打开相同端口。

我是在云平台,所以可以关闭防火墙,配置安全组就可以了 

 

3.2 客户端连通性测试

# Mac / Linux 本地
nc -vz <REMOTE_IP> 19530
nc -vz <REMOTE_IP> 9091

端口成功握手后,再使用 SDK 连接。

3.3 Python 代码示例(PyMilvus ≥ 2.5)

from pymilvus import utility, connections

# 1. 建立连接
connections.connect(
    alias="default",
    host="REMOTE_IP",  # 远程公网/内网地址
    port="19530",
    secure=False       # 如使用 nginx + TLS,可改 True
)

# 2. 查看健康
print(utility.get_server_version())   # 预期输出 v2.5.x

# 3. 查看现有集合
print(utility.list_collections())

# 4. 断连
connections.disconnect("default")

官方 Quickstart 教程同样适用,只需把 host 设为远端 IP。


 

4 常见问题与排查

现象

原因

解决

Fail connecting to server on localhost:19530

版本不匹配 / 端口未通

1) 升级 pymilvus ==2.5.* 2) 确认安全组与防火墙已开放

MilvusException(code=2)

Docker 端口未映射或被 SELinux 拦截

1) 确认 -p 参数 2) 关闭或配置 SELinux

WebUI 打不开

端口 9091 未放通 / 旧版无 WebUI

开放 9091 并确保镜像 ≥ v2.5

插入/查询慢

未启用 GPU 或索引未构建

使用 HNSW / IVF 索引,或升级硬件


5 升级与维护

  • 升级镜像:docker pull milvusdb/milvus:v2.5.12 && docker stop milvus25 && docker rm milvus25 && docker run ... (保持数据卷不变即可就地升级)。最新版变更参见 Release Notes。

  • 备份:定期打包 $HOME/milvus_data 或挂载到外置 NFS / S3。

  • 多线程连接:在 Web 服务中,每个线程使用不同的 alias 连接可避免竞争。


 

6 全文流程速查表

步骤

命令 / 操作

安装 Docker

apt install docker-ce ...

拉起 Milvus

docker run -d --name milvus25 -p 19530:19530 -p 9091:9091 -v ~/milvus_data:/var/lib/milvus milvusdb/milvus:v2.5.1

开防火墙

ufw allow 19530/tcp && ufw allow 9091/tcp

本地连接

connections.connect(host="REMOTE_IP", port="19530")

浏览 WebUI

http://REMOTE_IP:9091


参考来源

  • Run Milvus in Docker (Linux) — Milvus 官方文档 milvus.io

  • Run Milvus with Docker Compose (Linux) — Milvus 官方文档 milvus.io

  • Configure Milvus with Docker Compose — Milvus 官方文档 milvus.io

  • Ubuntu UFW 配置指南 — 腾讯云开发者社区 cloud.tencent.com

  • Docker exec 使用教程 — Docker 官方文档 docs.docker.com

  • PyMilvus 快速开始 — Milvus 博客 milvus.io

  • Milvus Standalone 容器启动失败排查 — GitHub Issue github.com

  • Docker CLI Cheat Sheet — Docker 官方文档 docs.docker.com

  • Ubuntu UFW 实战案例 — 腾讯云开发者社区 cloud.tencent.com

  • Docker Compose Exec 指南 — Docker 官方文档 docs.docker.com

尾声

按照以上步骤,你即可在任何 Linux 云主机上 3 分钟内部署 Milvus 2.5 并让本地开发机稳定访问。后续只需关注端口、版本、数据卷三要素,便能避免 99 % 常见坑,安心构建向量检索 + BM25 混合 RAG 生产环境。如有疑问,欢迎在评论区留言交流。祝各位向量搜索一路丝滑 🚀


如果本文对你有帮助,欢迎 点赞评论转发,一起交流 Milvus 部署经验!

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2407775.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高频面试之3Zookeeper

高频面试之3Zookeeper 文章目录 高频面试之3Zookeeper3.1 常用命令3.2 选举机制3.3 Zookeeper符合法则中哪两个&#xff1f;3.4 Zookeeper脑裂3.5 Zookeeper用来干嘛了 3.1 常用命令 ls、get、create、delete、deleteall3.2 选举机制 半数机制&#xff08;过半机制&#xff0…

ESP32读取DHT11温湿度数据

芯片&#xff1a;ESP32 环境&#xff1a;Arduino 一、安装DHT11传感器库 红框的库&#xff0c;别安装错了 二、代码 注意&#xff0c;DATA口要连接在D15上 #include "DHT.h" // 包含DHT库#define DHTPIN 15 // 定义DHT11数据引脚连接到ESP32的GPIO15 #define D…

CentOS下的分布式内存计算Spark环境部署

一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架&#xff0c;相比 MapReduce 具有以下核心优势&#xff1a; 内存计算&#xff1a;数据可常驻内存&#xff0c;迭代计算性能提升 10-100 倍&#xff08;文档段落&#xff1a;3-79…

汽车生产虚拟实训中的技能提升与生产优化​

在制造业蓬勃发展的大背景下&#xff0c;虚拟教学实训宛如一颗璀璨的新星&#xff0c;正发挥着不可或缺且日益凸显的关键作用&#xff0c;源源不断地为企业的稳健前行与创新发展注入磅礴强大的动力。就以汽车制造企业这一极具代表性的行业主体为例&#xff0c;汽车生产线上各类…

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility

Cilium动手实验室: 精通之旅---20.Isovalent Enterprise for Cilium: Zero Trust Visibility 1. 实验室环境1.1 实验室环境1.2 小测试 2. The Endor System2.1 部署应用2.2 检查现有策略 3. Cilium 策略实体3.1 创建 allow-all 网络策略3.2 在 Hubble CLI 中验证网络策略源3.3 …

HTML 列表、表格、表单

1 列表标签 作用&#xff1a;布局内容排列整齐的区域 列表分类&#xff1a;无序列表、有序列表、定义列表。 例如&#xff1a; 1.1 无序列表 标签&#xff1a;ul 嵌套 li&#xff0c;ul是无序列表&#xff0c;li是列表条目。 注意事项&#xff1a; ul 标签里面只能包裹 li…

深入理解JavaScript设计模式之单例模式

目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式&#xff08;Singleton Pattern&#…

STM32F4基本定时器使用和原理详解

STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…

【机器视觉】单目测距——运动结构恢复

ps&#xff1a;图是随便找的&#xff0c;为了凑个封面 前言 在前面对光流法进行进一步改进&#xff0c;希望将2D光流推广至3D场景流时&#xff0c;发现2D转3D过程中存在尺度歧义问题&#xff0c;需要补全摄像头拍摄图像中缺失的深度信息&#xff0c;否则解空间不收敛&#xf…

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…

dedecms 织梦自定义表单留言增加ajax验证码功能

增加ajax功能模块&#xff0c;用户不点击提交按钮&#xff0c;只要输入框失去焦点&#xff0c;就会提前提示验证码是否正确。 一&#xff0c;模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…

抖音增长新引擎:品融电商,一站式全案代运营领跑者

抖音增长新引擎&#xff1a;品融电商&#xff0c;一站式全案代运营领跑者 在抖音这个日活超7亿的流量汪洋中&#xff0c;品牌如何破浪前行&#xff1f;自建团队成本高、效果难控&#xff1b;碎片化运营又难成合力——这正是许多企业面临的增长困局。品融电商以「抖音全案代运营…

2.Vue编写一个app

1.src中重要的组成 1.1main.ts // 引入createApp用于创建应用 import { createApp } from "vue"; // 引用App根组件 import App from ./App.vue;createApp(App).mount(#app)1.2 App.vue 其中要写三种标签 <template> <!--html--> </template>…

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…

定时器任务——若依源码分析

分析util包下面的工具类schedule utils&#xff1a; ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类&#xff0c;封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz&#xff0c;先构建任务的 JobD…

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA&#xff08;Direct Memory Access&#xff09;直接存储器存取 DMA可以提供外设…

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码&#xff0c;专为学校招生场景量身打造&#xff0c;功能实用且操作便捷。 从技术架构来看&#xff0c;ThinkPHP提供稳定可靠的后台服务&#xff0c;FastAdmin加速开发流程&#xff0c;UniApp则保障小程序在多端有良好的兼…

家政维修平台实战20:权限设计

目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系&#xff0c;主要是分成几个表&#xff0c;用户表我们是记录用户的基础信息&#xff0c;包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题&#xff0c;不同的角色&#xf…