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

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

本文概要

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 部署经验!

 

相关文章:

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

本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装&#xff1b;只需暴露 19530&#xff08;gRPC&#xff09;与 9091&#xff08;HTTP/WebUI&#xff09;两个端口&#xff0c;即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...

高频面试之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…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

Linux简单的操作

ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

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 …...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

系统设计 --- MongoDB亿级数据查询优化策略

系统设计 --- MongoDB亿级数据查询分表策略 背景Solution --- 分表 背景 使用audit log实现Audi Trail功能 Audit Trail范围: 六个月数据量: 每秒5-7条audi log&#xff0c;共计7千万 – 1亿条数据需要实现全文检索按照时间倒序因为license问题&#xff0c;不能使用ELK只能使用…...

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的代码讲解中断代码定时启动…...

JVM垃圾回收机制全解析

Java虚拟机&#xff08;JVM&#xff09;中的垃圾收集器&#xff08;Garbage Collector&#xff0c;简称GC&#xff09;是用于自动管理内存的机制。它负责识别和清除不再被程序使用的对象&#xff0c;从而释放内存空间&#xff0c;避免内存泄漏和内存溢出等问题。垃圾收集器在Ja…...

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

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

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

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

【磁盘】每天掌握一个Linux命令 - iostat

目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat&#xff08;I/O Statistics&#xff09;是Linux系统下用于监视系统输入输出设备和CPU使…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

React Native在HarmonyOS 5.0阅读类应用开发中的实践

一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强&#xff0c;React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 &#xff08;1&#xff09;使用React Native…...

基于Uniapp开发HarmonyOS 5.0旅游应用技术实践

一、技术选型背景 1.跨平台优势 Uniapp采用Vue.js框架&#xff0c;支持"一次开发&#xff0c;多端部署"&#xff0c;可同步生成HarmonyOS、iOS、Android等多平台应用。 2.鸿蒙特性融合 HarmonyOS 5.0的分布式能力与原子化服务&#xff0c;为旅游应用带来&#xf…...

服务器硬防的应用场景都有哪些?

服务器硬防是指一种通过硬件设备层面的安全措施来防御服务器系统受到网络攻击的方式&#xff0c;避免服务器受到各种恶意攻击和网络威胁&#xff0c;那么&#xff0c;服务器硬防通常都会应用在哪些场景当中呢&#xff1f; 硬防服务器中一般会配备入侵检测系统和预防系统&#x…...

django filter 统计数量 按属性去重

在Django中&#xff0c;如果你想要根据某个属性对查询集进行去重并统计数量&#xff0c;你可以使用values()方法配合annotate()方法来实现。这里有两种常见的方法来完成这个需求&#xff1a; 方法1&#xff1a;使用annotate()和Count 假设你有一个模型Item&#xff0c;并且你想…...

Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务

通过akshare库&#xff0c;获取股票数据&#xff0c;并生成TabPFN这个模型 可以识别、处理的格式&#xff0c;写一个完整的预处理示例&#xff0c;并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务&#xff0c;进行预测并输…...

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

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

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

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

电脑插入多块移动硬盘后经常出现卡顿和蓝屏

当电脑在插入多块移动硬盘后频繁出现卡顿和蓝屏问题时&#xff0c;可能涉及硬件资源冲突、驱动兼容性、供电不足或系统设置等多方面原因。以下是逐步排查和解决方案&#xff1a; 1. 检查电源供电问题 问题原因&#xff1a;多块移动硬盘同时运行可能导致USB接口供电不足&#x…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

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>…...