mac 使用 Docker 安装向量数据库Milvus独立版的保姆级别教程

news2025/5/9 22:24:59

Milvus

  • 特点:开源的云原生向量数据库,支持多种索引类型和GPU加速,能够在亿级向量规模下实现低延迟高吞吐。具有灵活的部署选项和强大的社区支持。

  • 适用场景:适合处理超大规模数据和高性能需求的应用,如图像搜索、推荐系统和自然语言处理。

  • 了解更多关于Milvus的信息

一、环境准备

1. 硬件要求
  • 内存:至少 8GB(推荐 16GB+),Milvus 依赖的 etcd 和 MinIO 组件会占用约 4GB 内存。
  • 磁盘:至少 50GB 可用空间(存储向量数据和索引)。
  • CPU:双核 Intel 或 Apple Silicon(M1/M2)芯片。
2. 软件要求
  • macOS 版本:10.14(Mojave)或更高版本(如 macOS 14 Sonoma)。
  • Docker Desktop:安装最新版(支持 Apple Silicon 芯片的 ARM 架构镜像)。

二、安装 Docker Desktop

  1. 下载 Docker Desktop
    访问 Docker 官网,下载适合 macOS 的版本(支持 Intel 和 Apple Silicon)。

  2. 安装并启动 Docker

    • 双击下载的 .dmg 文件,将 Docker 图标拖入 Applications 文件夹。
    • 打开 Docker Desktop,首次启动时需授权权限(如访问文件系统、网络等)。
    • 登录 Docker Hub 账号(可选,但推荐以便拉取镜像)。
  3. 验证 Docker 是否安装成功
    在终端运行以下命令:

    docker --version
    docker-compose --version  # 确保 Docker Compose 已集成(v2.x+)

    输出:

三、安装 Milvus 独立版

1.拉取 Milvus 镜像
docker pull milvusdb/milvus:v2.3.12
2.创建配置文件目录
mkdir -p ~/milvus/conf
cd ~/milvus
3. 下载 Milvus 的 Docker Compose 配置文件

在终端运行以下命令,下载 Milvus 官方提供的 docker-compose.yml 文件(以 Milvus v2.3.12 为例):

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

在 macOS 终端中遇到 command not found: wget 错误,通常是因为系统未安装 wget 工具。wget 是一个常用的命令行工具,用于从网络下载文件(支持 HTTP、HTTPS 和 FTP 协议)。以下是解决方法:

方法1:用 curl -o docker-compose.yml [URL]

方法2 :通过 Homebrew 安装 wget

  1. 安装 Homebrew(如果尚未安装)
    Homebrew 是 macOS 上的包管理器,可以方便地安装和管理命令行工具。
    在终端运行以下命令安装 Homebrew:

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
  2. 使用 Homebrew 安装 wget
    安装完 Homebrew 后,运行以下命令安装 wget

    brew install wget
  3. 验证安装
    安装完成后,运行以下命令验证 wget 是否可用:

    wget --version

    如果输出版本信息(如 GNU Wget 1.21.4),则表示安装成功。

或手动创建文件:

# docker-compose.yml
version: '3.8'
services:
  etcd:
    image: quay.io/coreos/etcd:v3.5.5
    container_name: milvus-etcd
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    ports:
      - "2379:2379"
    command: etcd -advertise-client-urls=http://0.0.0.0:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd

  minio:
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    container_name: milvus-minio
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    ports:
      - "9000:9000"
      - "9001:9001"
    command: minio server /minio_data --console-address ":9001"

  standalone:
    image: milvusdb/milvus:v2.3.12
    container_name: milvus-standalone
    ports:
      - "19530:19530"  # gRPC 端口
      - "9091:9091"    # HTTP 端口
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    depends_on:
      - "etcd"
      - "minio"
4. 启动 Milvus 服务

在终端进入 docker-compose.yml 所在目录,运行以下命令:

docker compose up -d
  • -d 表示后台运行。
  • 首次启动会下载 Milvus、etcd 和 MinIO 的镜像(约 2GB),需耐心等待。
3. 验证服务状态

运行以下命令检查容器是否正常运行:

docker compose ps

输出示例:

NAME                COMMAND                  STATE           PORTS
milvus-etcd         "/usr/local/bin/etcd..." Up (healthy)   2379/tcp, 2380/tcp
milvus-minio        "/usr/bin/docker-ent..." Up (healthy)   9000/tcp, 9001/tcp
milvus-standalone   "/tini -- milvus run..." Up (healthy)   0.0.0.0:19530->19530/tcp, 0.0.0.0:9091->9091/tcp

4. 访问 Milvus Web UI

  • 打开浏览器,访问 http://localhost:9091/webui
  • 默认无需登录,可直接查看 Milvus 的运行状态、集合信息等。

四、连接 Milvus 客户端

1. 使用 PyMilvus 连接

安装 PyMilvus:

pip3 install pymilvus==2.5.4

测试连接:

from pymilvus import connections

connections.connect(
    host="localhost",
    port="19530",
    user="",
    password=""
)
print(connections.list_connections())  # 输出连接信息
2. 使用 cURL 测试健康检查
curl -I http://localhost:9091/healthz

返回 HTTP/1.1 200 OK 表示服务正常。


五、常见问题排查

  1. 镜像下载慢
    • 配置 Docker 国内镜像源(如阿里云、中科大等)。
    • 修改 Docker Desktop 的 Settings > Docker Engine,添加以下配置:
      {
        "registry-mirrors": ["https://<your-mirror-url>"]
      }
  2. 容器启动失败
    • 检查日志:
      docker compose logs -f

      常见原因:

      • 端口冲突

                修改 docker-compose.yml 中的端口映射(如 19530:19530 改为 19531:19530
      • 内存不足

        在 Docker Desktop 设置中增加内存分配(建议至少 4GB)
  3. Apple Silicon 芯片兼容性问题
    • 确保使用 Milvus 的 ARM 镜像(如 milvusdb/milvus:v2.5.4-arm64)。
    • 修改 docker-compose.yml 中的镜像标签为 -arm64
  4. 数据持久化问题
    • 默认数据存储在 ./volumes/ 目录下,删除容器前需备份该目录。
    • 停止并删除容器:
      docker compose down -v # -v 删除数据卷

六、卸载 Milvus

  1. 停止并删除容器:
    docker compose down -v
  2. 删除配置文件和卷:
    rm -rf docker-compose.yml volumes/

总结

        通过本教程,你可以在 macOS 上快速部署 Milvus 独立版,并通过 Web UI 或客户端进行交互。Milvus 独立版适合开发测试和小规模生产环境,如需分布式部署,可参考官方 Kubernetes 部署方案。你也可以参考使用Docker安装 Milvus 独立版(官方文档)。

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

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

相关文章

技术视界 | 青龙机器人训练地形详解(一):如何创建一个地形

机器人强化学习中的地形训练是利用强化学习算法让机器人在不同地形环境中通过试错学习最优行为策略的过程&#xff0c;通过环境建模、策略学习与优化等环节&#xff0c;使机器人能够自主适应复杂多变的地形&#xff0c;提高其移动效率、稳定性和自主性&#xff0c;减少人为干预…

2025-05-04 Unity 网络基础6——TCP心跳消息

文章目录 1 Disconnect 方法2 心跳消息 ​ 在客户端主动退出时&#xff0c;我们会调用 socket 的 ShutDown() 和 Close() 方法&#xff0c;但调用这两个方法后&#xff0c;服务器端无法得知客户端已经主动断开。 ​ 本文主要介绍在网络通信中&#xff0c;如何服务端如何判断客…

word导出pdf带有目录导航栏-error记

1、打开word文档——>点击"视图"选项卡——>勾选"导航窗格" 2、点击"文件"——>导出——>创建PDF/XPS 3、点击"选项"——>勾选"创建书签时使用(C)" "标题(H)" 4、点击"确定"——>点击…

1. 视频基础知识

1. 图像基础概念 像素&#xff1a;像素是一个图片的基本单位&#xff0c;pix是英语单词picture&#xff0c;加上英语单词“元素element”&#xff0c;就得到了pixel&#xff0c;简称px。所以“像素”有“图像元素”之意。分辨率&#xff1a;指的是图像的大小或者尺寸。比如 19…

HarmonyOS-hdc远程网络方式连接设备

hdc工具使用手册 1 hdc简介 hdc&#xff08;OpenHarmony Device Connector&#xff09;是为开发人员提供的用于设备连接调试的命令行工具&#xff0c;pc端开发机使用命令行工具hdc&#xff0c;该工具需支持部署在Windows/Linux/Mac等系统上与OpenHarmony设备&#xff08;或模…

奥威BI:AI+BI深度融合,重塑智能AI数据分析新标杆

在数字化浪潮席卷全球的今天&#xff0c;企业正面临着前所未有的数据挑战与机遇。如何高效、精准地挖掘数据价值&#xff0c;已成为推动业务增长、提升竞争力的核心议题。奥威BI&#xff0c;作为智能AI数据分析领域的领军者&#xff0c;凭借其创新的AIBI融合模式&#xff0c;正…

第三节第一部分:Static修饰类变量、成员变量

总结 案例 要求 代码&#xff1a; User类&#xff1a; package com.day1_static;public class User {public static int num;public User() {User.num;} }Test类&#xff1a; package com.day1_static;public class Test {public static void main(String[] args) {User us…

高级架构软考之网络OSI网络模型

高级架构软考之网络&#xff1a; 1.OSI网络模型&#xff1a; a.物理层&#xff1a; a.物理传输介质物理连接&#xff0c;负责数据传输&#xff0c;并监控数据 b.传输单位&#xff1a;bit c.协议&#xff1a; d:对应设备&#xff1a;中继器、集线器 b.数据链路层&#xff1a; a.…

Kubernetes(k8s)学习笔记(六)--KubeSphere前置环境安装

1、安装 helm&#xff08;master 节点执行&#xff09; Helm 是 Kubernetes 的包管理器。包管理器类似于我们在 Ubuntu 中使用的apt、Centos 中使用的 yum 或者 Python 中的 pip 一样&#xff0c;能快速查找、下载和安装软件包。Helm由客户端组件 helm 和服务端组件 Tiller 组…

架构思维:构建高并发读服务_异构数据的同步一致性方案

文章目录 一、引言二、全景架构回顾三、潜在问题问题1&#xff1a;Binlog 延迟——理想 vs 实际问题2&#xff1a;Binlog 格式解析问题3&#xff1a;高可靠消费1. 串行 ACK 消费2. 并行消费&#xff0b;乱序风险3. 解决方案 问题4&#xff1a;缓存数据结构设计1. Key–Value 冗…

剑指大规模 AI 可观测,阿里云 Prometheus 2.0 应运而生

作者&#xff1a;曾庆国&#xff08;悦达&#xff09; Prometheus 大家应该非常熟悉&#xff0c;正文开始前&#xff0c;让我们一起来回顾开源 Prometheus 项目的发展史。Prometheus 最初由 SoundCloud 的工程师 Bjrn Rabehl 和 Julius Volz 于 2012 年开发。当时&#xff0c;…

游戏引擎学习第260天:在性能分析器中实现钻取功能

昨天那个帧内存满之后触发段错误实在没找到什么原因导致的 继续研究一下为什么导致的 内存不够进来释放frame 释放frame 应该会给DebugState->FirstFreeStoredEvent 赋值吧 这段宏定义&#xff1a; #define FREELIST_DEALLOCATE(Pointer, FreeListPointer) \if(Pointer) {…

【自然语言处理与大模型】使用Xtuner进行QLoRA微调实操

本文首先对Xtuner这一微调框架进行简单的介绍。手把手演示如何使用Xtuner对模型进行微调训练&#xff0c;包括数据准备、训练命令执行及训练过程中的监控技巧。最后&#xff0c;在完成微调之后&#xff0c;本文还将介绍如何对微调结果进行简单对话测试。 一、Xtuner微调框架 X…

扣子创建一个应用

什么是扣子应用 扣子应用可以让你相对轻松的搭建一个具备AI功能的应用&#xff0c;它区别智能体&#xff0c;在于智能体的ui和交互相对固定&#xff0c;主要是以对话框聊天的方式进行交互&#xff0c;而扣子应用则可以让ui交互表现更加丰富。 实践一个生成图片的应用 这里我…

SpringBoot教程(vuepress版)

Spring Boot 教程 项目介绍 这是一个系统化的 Spring Boot 学习教程&#xff0c;采用循序渐进的方式&#xff0c;帮助开发者从零开始掌握 Spring Boot 开发。 教程特点 系统化的知识结构实用的代码示例完整的实战案例丰富的练习作业 目录结构 基础入门 Spring Boot 简介…

FiLo++的框架图介绍

FiLo框架图模块详解 1. 文本生成模块 Normal Texts 功能&#xff1a;生成正常样本的文本描述。输入&#xff1a;固定模板&#xff08;如 A [domain] photo of [state][cls]&#xff09;和可学习模板&#xff08;如 [v1][v2]...[vm][state][cls]&#xff09;。输出&#xff1a;融…

C++--入门基础

C入门基础 1. C的第一个程序 C继承C语言许多大多数的语法&#xff0c;所以以C语言实现的hello world也可以运行&#xff0c;C中需要把文件定义为.cpp&#xff0c;vs编译器看是.cpp就会调用C编译器编译&#xff0c;linux下要用g编译&#xff0c;不再是gcc。 // test.cpp #inc…

准确---Typora配置Gitee图床并实现自动图片上传

下载地址&#xff1a;https://github.com/Molunerfinn/picgo/releases 安装就直接下一步&#xff0c;下一步就行 安装完以后然后回到Typora上偏好设置指定一下路径 默认是 C:\Program Files\PicGo\PicGo.exe 并且还需要选择规则 接下来就需要去PicGo上面配置了 配置之前需要去…

Day111 | 灵神 | 二叉树 | 验证二叉搜索树

Day111 | 灵神 | 二叉树 | 验证二叉搜索树 98.验证二叉搜索树 98. 验证二叉搜索树 - 力扣&#xff08;LeetCode&#xff09; 方法一&#xff1a;前序遍历 递归函数传入合法的左右边界&#xff0c;只有当前结点是合法的边界&#xff0c;才是二叉搜索树&#xff0c;否则就返回…

Redis 8.0 正式版发布,新特性很强!

就在前两天&#xff0c;Redis 8.0 正式版 (GA) 来了&#xff01;这并不是一次简单的更新&#xff0c;Redis 8.0 不仅带来了性能上的进一步提升&#xff0c;还带来一些实用的新特性与功能增强。并且&#xff0c;最重要的是拥抱 AGPLv3 重归开源&#xff01; 下面&#xff0c;简单…