Windows 系统下使用 Docker 安装 Milvus 向量数据库

引路者👇:

引言

[一、Docker 简介](#一、Docker 简介)

[Docker 的基本操作](#Docker 的基本操作)

[二、安装 Milvus](#二、安装 Milvus)

安装步骤

[Milvus 架构图](#Milvus 架构图)

[三、使用 Milvus](#三、使用 Milvus)

四、总结


引言

在数据分析和机器学习领域,Milvus 作为一款高性能的向量数据库,正变得越来越受欢迎。它能够高效地处理海量向量数据,支持复杂的相似性搜索,广泛应用于推荐系统、图像识别和自然语言处理等领域。在 Windows 系统上,借助 Docker,我们可以轻松地部署和管理 Milvus,无需担心复杂的依赖问题。本文将详细介绍如何在 Windows 系统上使用 Docker 安装 Milvus 向量数据库,包括 Docker 的基本使用方法和 Milvus 的部署步骤。

一、Docker 简介

Docker 是一个开源的应用容器引擎,它允许开发者将应用及其依赖打包到一个可移植的容器中,然后发布到任何支持 Docker 的平台上。Docker 容器与虚拟机相比,具有启动速度快、资源占用少等优点。

Docker 的基本操作

  1. 安装 Docker Desktop

    • 访问 https://www.docker.com/products/docker-desktop 下载 Docker Desktop。

    • 安装过程中,建议选择使用 WSL 2(Windows Subsystem for Linux 2)作为后端,因为它比 Hyper-V 提供更好的性能和兼容性。

    • 安装完成后,重启计算机以完成安装。

  2. 基本命令

    • 查看 Docker 版本docker --versiondocker-compose --version

    • 查看当前运行的容器docker ps

    • 启动/停止容器docker start <container_id>docker stop <container_id>

    • 删除容器docker rm <container_id>

    • 构建镜像docker build -t <image_name> .

    • 运行容器docker run -d -p <host_port>:<container_port> <image_name>

二、安装 Milvus

Milvus 是一个开源的向量数据库,专为处理海量向量数据而设计。它支持多种数据类型和索引结构,能够高效地进行相似性搜索。

安装步骤

  1. 创建文件夹和配置文件

    • 创建一个名为 milvus 的文件夹,并在其中创建以下文件和文件夹结构:

      python 复制代码
      milvus/
      ├── volumes/
      │   ├── etcd/
      │   ├── minio/
      │   └── milvus/
      └── docker-compose.yml
    • 编辑 docker-compose.yml 文件,内容如下:

python 复制代码
version: '3.5'
services:
  etcd:
    container_name: milvus-etcd
    image: quay.io/coreos/etcd:v3.5.5
    environment:
      - ETCD_AUTO_COMPACTION_MODE=revision
      - ETCD_AUTO_COMPACTION_RETENTION=1000
      - ETCD_QUOTA_BACKEND_BYTES=4294967296
      - ETCD_SNAPSHOT_COUNT=50000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/etcd:/etcd
    command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd
    healthcheck:
      test: ["CMD", "etcdctl", "endpoint", "health"]
      interval: 30s
      timeout: 20s
      retries: 3

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    ports:
      - "9001:9001"
      - "9000:9000"
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data --console-address ":9001"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]
      interval: 30s
      timeout: 20s
      retries: 3

  standalone:
    container_name: milvus-standalone
    image: milvusdb/milvus:v2.3.10
    command: ["milvus", "run", "standalone"]
    security_opt:
      - seccomp:unconfined
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]
      interval: 30s
      start_period: 90s
      timeout: 20s
      retries: 3
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - etcd
      - minio

  attu:
    container_name: attu
    image: zilliz/attu:v2.3.10
    environment:
      MILVUS_URL: standalone:19530
    ports:
      - "8000:3000"
    depends_on:
      - standalone
  1. 运行 Docker Compose

    • 打开命令提示符,切换到 milvus 文件夹目录。

    • 运行以下命令启动 Milvus 服务

      复制代码
      docker-compose up -d
    • 如果出现端口冲突错误,需要修改 docker-compose.yml 文件中的端口配置,确保端口未被占用。

  2. 验证 Milvus 是否成功启动

    • 打开浏览器,访问 http://127.0.0.1:8000,如果看到 Milvus 的管理界面,说明安装成功。

Milvus 架构图

三、使用 Milvus

Milvus 提供了丰富的 API 和 SDK,支持 Python、Java、Go 等多种编程语言。以下是使用 Python SDK 连接 Milvus 的示例代码:

python 复制代码
from pymilvus import connections, Collection, FieldSchema, CollectionSchema, DataType

# 连接到 Milvus 服务
connections.connect("default", host="127.0.0.1", port="19530")

# 定义集合结构
fields = [
    FieldSchema(name="id", dtype=DataType.INT64, is_primary=True),
    FieldSchema(name="embedding", dtype=DataType.FLOAT_VECTOR, dim=128)
]
schema = CollectionSchema(fields, description="example collection")

# 创建集合
collection_name = "example_collection"
collection = Collection(name=collection_name, schema=schema)

# 插入数据
data = [
    [i for i in range(10)],
    [[float(i) for _ in range(128)] for i in range(10)]
]
collection.insert(data)

# 创建索引
index_params = {
    "metric_type": "L2",
    "index_type": "IVF_FLAT",
    "params": {"nlist": 10}
}
collection.create_index(field_name="embedding", index_params=index_params)

# 进行相似性搜索
search_params = {"metric_type": "L2", "params": {"nprobe": 10}}
result = collection.search(
    data=[[float(i) for i in range(128)]],
    anns_field="embedding",
    param=search_params,
    limit=3,
    expr=None
)
print(result)

四、总结

通过 Docker,我们可以在 Windows 系统上轻松地安装和运行 Milvus 向量数据库。Docker 的容器化技术使得 Milvus 的部署变得简单快捷,同时也方便了后续的维护和升级。Milvus 提供了强大的向量数据处理能力,能够满足各种复杂的应用场景需求。希望本文的介绍能够帮助你快速上手 Milvus,并在实际项目中发挥其强大的功能。

如果实践操作中遇到其他问题,也可以在评论区留言,Fly帮你在线答疑!!!

相关推荐
我是谁??10 小时前
ubuntu22.04 通过docker部署vLLM(Qwen3-0.6B)大模型+New API+OpenWebUI
docker·容器·vllm
运维瓦工10 小时前
DevOps 生态介绍(十):Docker Compose 核心 YAML 配置详解与常用命令大全
spring cloud·docker·容器
云烟成雨TD11 小时前
Spring AI 1.x 系列【59】容器化开发支持:Docker Compose 与 Testcontainers
人工智能·spring·docker
Plastic garden11 小时前
K8s(10)NFS 的动态 PV 创建数据库给k8s的mysql和redis
docker·容器·kubernetes
与海boy11 小时前
docker compose minio
docker·容器·eureka
雾沉川11 小时前
Nano11 25H2 精简版 Windows11 系统介绍与部署实操教程
windows
JimCarter12 小时前
使用Azure Devops Pipeline将Docker应用部署到你的Raspberry Pi上
docker·azure·树莓派·devops·orangepi·香橙派·raspberrypi
武子康12 小时前
调查研究-167 Docker Compose 详解:从单容器到多服务编排的工程化入口
运维·docker·云原生·容器·kubernetes·k8s·docker-compose
旅僧13 小时前
Ubantu docker环境配置(前置)
运维·docker·容器