Milvus Docker 部署教程

1. 环境准备

确保您的系统已安装:

  • Docker
  • Docker Compose
  • Python (用于运行客户端代码)

2. 项目结构

创建项目目录并设置以下文件:

plaintext 复制代码
milvus-docker/
├── docker-compose.yml
├── main.py

3. 配置文件

docker-compose.yml

yaml:d:\node_test\milvus-docker\docker-compose.yml 复制代码
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
    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

  minio:
    container_name: milvus-minio
    image: minio/minio:RELEASE.2023-03-20T20-16-18Z
    environment:
      MINIO_ACCESS_KEY: minioadmin
      MINIO_SECRET_KEY: minioadmin
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/minio:/minio_data
    command: minio server /minio_data
    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.3
    command: ["milvus", "run", "standalone"]
    environment:
      ETCD_ENDPOINTS: etcd:2379
      MINIO_ADDRESS: minio:9000
    volumes:
      - ${DOCKER_VOLUME_DIRECTORY:-.}/volumes/milvus:/var/lib/milvus
    ports:
      - "19530:19530"
      - "9091:9091"
    depends_on:
      - "etcd"
      - "minio"

4. 启动服务

在项目目录下运行:

bash 复制代码
docker-compose up -d

这将启动三个容器:

  • milvus-etcd: 元数据存储
  • milvus-minio: 对象存储
  • milvus-standalone: Milvus 服务器

5. Python 客户端示例

安装 Python 依赖:

bash 复制代码
pip install pymilvus

main.py 示例代码

python:d:\node_test\milvus-docker\main.py 复制代码
from pymilvus import MilvusClient

# Authentication not enabled
client = MilvusClient("http://localhost:19530")

client.create_collection(collection_name="test_collection", dimension=5)

client.insert(
    collection_name="test_collection",
    data=[
         {"id": 0, "vector": [0.3580376395471989, -0.6023495712049978, 0.18414012509913835, -0.26286205330961354, 0.9029438446296592], "color": "pink_8682"},
         {"id": 1, "vector": [0.19886812562848388, 0.06023560599112088, 0.6976963061752597, 0.2614474506242501, 0.838729485096104], "color": "red_7025"},
         {"id": 2, "vector": [0.43742130801983836, -0.5597502546264526, 0.6457887650909682, 0.7894058910881185, 0.20785793220625592], "color": "orange_6781"},
         {"id": 3, "vector": [0.3172005263489739, 0.9719044792798428, -0.36981146090600725, -0.4860894583077995, 0.95791889146345], "color": "pink_9298"},
         {"id": 4, "vector": [0.4452349528804562, -0.8757026943054742, 0.8220779437047674, 0.46406290649483184, 0.30337481143159106], "color": "red_4794"},
         {"id": 5, "vector": [0.985825131989184, -0.8144651566660419, 0.6299267002202009, 0.1206906911183383, -0.1446277761879955], "color": "yellow_4222"},
         {"id": 6, "vector": [0.8371977790571115, -0.015764369584852833, -0.31062937026679327, -0.562666951622192, -0.8984947637863987], "color": "red_9392"},
         {"id": 7, "vector": [-0.33445148015177995, -0.2567135004164067, 0.8987539745369246, 0.9402995886420709, 0.5378064918413052], "color": "grey_8510"},
         {"id": 8, "vector": [0.39524717779832685, 0.4000257286739164, -0.5890507376891594, -0.8650502298996872, -0.6140360785406336], "color": "white_9381"},
         {"id": 9, "vector": [0.5718280481994695, 0.24070317428066512, -0.3737913482606834, -0.06726932177492717, -0.6980531615588608], "color": "purple_4976"}
     ],
)



res = client.get(
    collection_name="test_collection",
    ids=1
)

print(res)
"""
(milvus-docker) D:\node_test\milvus-docker>uv run main.py
data: ["{'id': 1, 'vector': [np.float32(0.19886813), np.float32(0.060235605), np.float32(0.6976963), np.float32(0.26144746), np.float32(0.8387295)], 'color': 'red_7025'}"]
"""

6. 验证部署

运行 Python 示例代码:

bash 复制代码
python main.py

如果看到类似以下输出,说明部署成功:

复制代码
data: ["{'id': 1, 'vector': [np.float32(0.19886813), np.float32(0.060235605), np.float32(0.6976963), np.float32(0.26144746), np.float32(0.8387295)], 'color': 'red_7025'}"]

7. 服务管理

  • 停止服务:
bash 复制代码
docker-compose down
  • 查看日志:
bash 复制代码
docker-compose logs -f
  • 重启服务:
bash 复制代码
docker-compose restart

参考链接:https://milvus.io/api-reference/pymilvus/v2.4.x/MilvusClient/Vector/query.md

相关推荐
水淹萌龙2 小时前
k8s 中使用 Service 访问时NetworkPolicy不生效问题排查
云原生·容器·kubernetes
alden_ygq4 小时前
K8S cgroups详解
容器·贪心算法·kubernetes
旧故新长5 小时前
访问 Docker 官方镜像源(包括代理)全部被“重置连接”或超时
运维·docker·容器
white.tie5 小时前
Docker部署单节点Elasticsearch
elasticsearch·docker·jenkins
云攀登者-望正茂10 小时前
最大化效率和性能:AKS 中节点池的强大功能
云原生·容器·kubernetes
haven-85210 小时前
win11安装Joplin Server私有化部署(docker)
运维·docker·容器
QX_hao11 小时前
【docker】--数据卷挂载
docker·容器·eureka
文静小土豆11 小时前
在K8S集群中部署EFK日志收集
docker·容器·kubernetes
一个向上的运维者11 小时前
k8s的flannel生产实战与常见问题排查
云原生·容器·kubernetes
不之道12 小时前
通过 wsl 安装 docker
运维·docker·容器