基于 Docker 部署单机版 Milvus 和 Redis 教程¶
本教程介绍如何在 Windows 11 和 M1 芯片的 macOS 系统上使用 Docker 同时部署和运行单机版 Milvus(向量数据库)和 Redis(键值存储数据库)。教程分为两部分,分别针对不同操作系统提供详细步骤。
前置条件¶
- 硬件要求
- 至少 8GB 内存(建议 16GB 或更高)。
- 至少 20GB 可用磁盘空间(Milvus 和 Redis 数据存储)。
- 软件要求
- 已安装 Docker Desktop(Windows 11 或 macOS)。
- 确保 Docker Compose 已包含在 Docker Desktop 中(通常默认安装)。
- 网络要求
- 稳定的互联网连接,用于拉取 Docker 镜像。
- 软件版本
- Milvus:2.4.4(最新稳定版)。
- Redis:7.2(最新稳定版)。
- 端口要求
- Milvus:
19530(gRPC)、9091(RESTful API)。 - Redis:
6379(默认端口)。 - 确保以上端口未被占用。
- Milvus:
一、Windows 11 系统部署 Milvus 和 Redis¶
1. 安装 Docker Desktop¶
-
下载 Docker Desktop
- 访问 Docker 官方网站,下载适用于 Windows 的 Docker Desktop 安装包。
-
安装 Docker Desktop
- 双击下载的安装文件,按照提示完成安装。
-
启用 WSL 2(Windows Subsystem for Linux 2)支持:
-
打开 PowerShell(以管理员身份),运行:
wsl --install
- 安装完成后,重启计算机。
-
-
验证 Docker 安装
-
打开 PowerShell 或命令提示符,运行:
docker --version docker compose version
- 确保输出版本信息,例如
Docker version 27.x.x和Docker Compose version v2.x.x。
-
2. 配置 Docker Compose 文件¶
-
创建项目目录
-
在本地磁盘(例如 C盘)创建一个文件夹,用于存放 Milvus 和 Redis 的配置文件和数据:
mkdir C:\milvus_redis cd C:\milvus_redis
-
-
创建 Docker Compose 文件
-
在 C:\milvus_redis 目录下创建文件
docker-compose.yml内容如下:
version: '3.5' # Windows/x86_64 Version # Redis Password set to: 1234 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_ENABLE_V2=true volumes: - ./volumes/etcd:/etcd/data command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd/data minio: container_name: milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - ./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 # 使用多架构镜像,Docker on Windows 会自动拉取 x86_64 版本 image: milvusdb/milvus:v2.4.4 command: ["milvus", "run", "standalone"] environment: - ETCD_ENDPOINTS=etcd:2379 - MINIO_ADDRESS=minio:9000 volumes: - ./volumes/milvus:/var/lib/milvus ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio" redis: container_name: milvus-redis image: redis:latest restart: always ports: - "6379:6379" volumes: - ./volumes/redis:/data # 设置 Redis 密码为 1234 command: redis-server --requirepass 1234 networks: default: name: milvus-network
-
说明
-
Milvus 服务
image: 使用 Milvus 官方镜像milvusdb/milvus:v2.4.10。ports: 映射 gRPC(19530)和 RESTful API(9091)端口。volumes: 数据持久化存储到本地./volumes/milvus目录。environment: 配置日志级别和 Etcd 参数。command: 启动 Milvus 单机模式。
-
Redis 服务
image: 使用 Redis 官方镜像redis:7.2。ports: 映射默认端口6379。volumes: 数据持久化存储到本地./volumes/redis目录。command: 启用 AOF(Append Only File)持久化模式。
volumes: 定义持久化存储卷。
-
-
3. 启动 Milvus 和 Redis¶
-
拉取镜像并启动容器
-
在 C:\milvus_redis 目录下,打开 PowerShell,运行:
docker compose up -d
-d表示后台运行容器。
-
-
验证容器状态
-
检查容器是否正常运行:
docker ps
- 确认
milvus_standalone和redis容器均处于Up状态。
-
4. 验证 Milvus 服务¶
-
安装 Milvus Python SDK
- 确保已安装 Python 3.8 或以上版本。
-
在 PowerShell 中安装:
pip install pymilvus
-
测试 Milvus 连接
-
创建 Python 脚本(例如 test_milvus.py ),内容如下:
from pymilvus import connections, utility # 连接到 Milvus connections.connect(host="localhost", port="19530") # 检查版本 print(f"Milvus version: {utility.get_server_version()}")
-
运行脚本:
python test_milvus.py
- 输出类似
Milvus version: 2.4.10表示 Milvus 部署成功。
-
5. 验证 Redis 服务¶
-
安装 Redis Python 客户端
-
在 PowerShell 中安装:
pip install redis
-
-
测试 Redis 连接
-
创建 Python 脚本(例如 test_redis.py ),内容如下:
import redis # 连接到 Redis client = redis.Redis(host="localhost", port=6379, decode_responses=True) # 测试读写 client.set("test_key", "Hello, Redis!") value = client.get("test_key") print(f"Redis value: {value}")
-
运行脚本:
python test_redis.py
- 输出类似
Redis value: Hello, Redis!表示 Redis 部署成功。
-
6. 停止和清理¶
-
停止服务
docker compose down
二、M1 芯片 macOS 系统部署 Milvus 和 Redis¶
M1 芯片(ARM64 架构)运行 Docker 时需确保镜像兼容性。Milvus 和 Redis 官方镜像均支持 ARM64,因此可以直接使用,但需正确配置 Docker Desktop。
1. 安装 Docker Desktop¶
-
下载 Docker Desktop
- 访问 Docker 官方网站,下载适用于 macOS(Apple Silicon)的 Docker Desktop 安装包。
-
安装 Docker Desktop
- 双击下载的
.dmg文件,按照提示拖动安装。 - 安装完成后,启动 Docker Desktop,并确保其在菜单栏运行。
- 双击下载的
-
验证 Docker 安装
-
打开终端,运行:
docker --version docker compose version
- 确保输出版本信息,例如
Docker version 27.x.x和Docker Compose version v2.x.x。
-
-
启用 Rosetta(可选)
- 如果遇到兼容性问题,可在 Docker Desktop 设置中启用 Rosetta 模拟:
- 打开 Docker Desktop -> Settings -> Features in Development -> 勾选 “Use Rosetta for x86/AMD64 emulation on Apple Silicon”。
- 如果遇到兼容性问题,可在 Docker Desktop 设置中启用 Rosetta 模拟:
2. 配置 Docker Compose 文件¶
-
创建项目目录
-
在终端中创建并进入目录:
mkdir ~/milvus_redis cd ~/milvus_redis
-
-
创建 Docker Compose 文件
-
创建文件
docker-compose.ymlversion: '3.5' # M1/ARM64 Mac Version # Redis Password set to: 1234 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_ENABLE_V2=true volumes: - ./volumes/etcd:/etcd/data command: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcd/data minio: container_name: milvus-minio image: minio/minio:RELEASE.2023-03-20T20-16-18Z environment: MINIO_ACCESS_KEY: minioadmin MINIO_SECRET_KEY: minioadmin volumes: - ./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 # 使用多架构镜像,Docker on M1 会自动拉取 ARM64 版本 image: milvusdb/milvus:v2.4.4 command: ["milvus", "run", "standalone"] environment: - ETCD_ENDPOINTS=etcd:2379 - MINIO_ADDRESS=minio:9000 volumes: - ./volumes/milvus:/var/lib/milvus ports: - "19530:19530" - "9091:9091" depends_on: - "etcd" - "minio" redis: container_name: milvus-redis image: redis:latest # Redis 官方镜像同样支持多架构 restart: always ports: - "6379:6379" volumes: - ./volumes/redis:/data # 设置 Redis 密码为 1234 command: redis-server --requirepass 1234 networks: default: name: milvus-network
- 注意:Milvus 和 Redis 镜像均支持 ARM64,无需额外配置。
-
3. 启动 Milvus 和 Redis¶
-
拉取镜像并启动容器
-
在 ~/milvus_redis 目录下,运行:
docker compose up -d
-
-
验证容器状态
-
检查容器是否运行:
docker ps
- 确认
milvus_standalone和redis容器均处于Up状态。
-
4. 验证 Milvus 服务¶
-
安装 Milvus Python SDK
- 确保已安装 Python 3.8 或以上版本。
-
在终端中安装:
pip install pymilvus
-
测试 Milvus 连接
-
创建 Python 脚本(例如 test_milvus.py ),内容与 Windows 部分相同:
from pymilvus import connections, utility # 连接到 Milvus connections.connect(host="localhost", port="19530") # 检查版本 print(f"Milvus version: {utility.get_server_version()}")
-
运行脚本:
python test_milvus.py
-
5. 验证 Redis 服务¶
-
安装 Redis Python 客户端
-
在终端中安装:
pip install redis
-
-
测试 Redis 连接
-
创建 Python 脚本(例如 test_redis.py ),内容与 Windows 部分相同:
import redis # 连接到 Redis client = redis.Redis(host="localhost", port=6379, decode_responses=True) # 测试读写 client.set("test_key", "Hello, Redis!") value = client.get("test_key") print(f"Redis value: {value}")
-
运行脚本:
python test_redis.py
-
6. 停止和清理¶
-
停止服务
docker compose down
-
清理数据
(可选):
-
删除 milvus 和 redis 目录:
rm -rf ~/milvus_redis/volumes/milvus rm -rf ~//milvus_redis/volumes/redis
-
常见问题与解决方法¶
-
端口冲突
- 如果
19530、9091或6379端口被占用,修改docker-compose.yml中的端口映射(例如19531:19530),并在客户端连接时使用新端口。
- 如果
-
镜像拉取失败
-
确保网络连接正常,或尝试手动拉取镜像:
docker pull milvusdb/milvus:v2.4.10 docker pull redis:7.2
-
-
M1 芯片兼容性问题
- 如果镜像运行失败,检查 Docker Desktop 是否启用了 Rosetta 模拟。
-
连接失败
- 确保容器运行正常,检查防火墙(Windows)或网络设置(macOS)是否阻止了端口。
-
Redis 数据未持久化
- 确保
docker-compose.yml中启用了--appendonly yes,且./redis_data目录有写权限。
- 确保