docker
是 引擎,是底层的基础工具。它用于管理单个容器(Container)的生命周期(构建、运行、停止、删除)。
docker-compose
是 编排工具,是上层的操作界面。它用于定义和运行由多个容器组成的、相互关联的整套应用(Multi-Container Applications)。
特性维度 | Docker (CLI) | Docker Compose |
---|---|---|
核心功能 | 管理单个容器和镜像 | 编排多个容器,定义一个完整的应用栈 |
操作对象 | 容器、镜像、网络、卷等 | 项目(Project),由 docker-compose.yml 文件定义 |
配置方式 | 通过一长串的命令行参数 (-p , -v , --env , --link 等) |
通过一个 YAML 配置文件 (docker-compose.yml ) |
使用场景 | 适合运行单个容器、临时测试、学习命令 | 适合开发、测试、生产环境部署多服务应用(如Webapp + DB + Cache) |
依赖关系 | 需要手动用 --link 或自定义网络处理容器间依赖和启动顺序 |
可以自动管理容器间的依赖、网络、启动顺序(depends_on ) |
复杂度 | 命令冗长复杂,难以记忆和重复 | 配置清晰直观,易于版本管理和共享 |
可移植性 | 差,一长串命令不易在不同环境重现 | 极强,一个 docker-compose.yml 文件就能在任何有Docker和Compose的机器上完美重现环境 |
安装并启动docker:
sudo apt update sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker
验证:docker --version
安装docker-compose
sudo apt install -y docker-compose
验证:docker-compose --version
安装Python 3.7+(用于 Milvus Lite 和验证)
sudo apt install -y python3 python3-pip
验证:python3 --version
(应显示 3.7 或更高)
Milvus 提供三种部署模式,适合不同场景:
Milvus Lite:像笔记本上的“迷你数据库”,通过 Python 库运行,无需额外服务器,适合快速学习和原型开发。
Milvus Standalone:单机“全能选手”,支持中等规模数据,适合开发、测试或小规模生产。
Milvus Distributed:分布式“超级舰队”,适合亿级向量和企业级场景。
对于 Milvus Standalone,我们将介绍两种安装方式:
Docker(Linux):通过单个容器快速启动,简单直接。
Docker Compose(Linux):通过配置文件管理 Milvus 及其依赖(etcd、MinIO),适合自定义配置。
安装方式一:Milvus Lite
pip3 install -U pymilvus
验证安装:
from pymilvus import MilvusClient client = MilvusClient("./milvus_demo.db") print("Milvus Lite connected successfully!")
-
成功后,当前目录生成
milvus_demo.db
文件,表示本地数据库已创建.
简单语义搜索验证:
from pymilvus import MilvusClient, CollectionSchema, FieldSchema, DataType client = MilvusClient("./milvus_demo.db") # 创建集合 schema = CollectionSchema(fields=[FieldSchema("id", DataType.INT64, is_primary=True, auto_id=True),FieldSchema("vector", DataType.FLOAT_VECTOR, dim=4) ]) client.create_collection("test_collection", schema) # 插入数据 vectors = [[0.1, 0.2, 0.3, 0.4], [0.2, 0.3, 0.4, 0.5]] client.insert("test_collection", {"vector": vectors}) # 插入数据 client.insert("test_collection", [{"vector": [0.1, 0.2, 0.3, 0.4]},{"vector": [0.2, 0.3, 0.4, 0.5]}]) index_params = MilvusClient.prepare_index_params() index_params.add_index(field_name="vector",index_type="IVF_FLAT",index_name="ivf_flat_index",params={"nlist": 128} ) # 创建索引 client.create_index(collection_name="test_collection",index_params=index_params ) # 搜索 results = client.search("test_collection", data=[[0.1, 0.2, 0.3, 0.4]], limit=1) print(f"Top result: ID {results[0][0]['id']}, Distance {results[0][0]['distance']}")
- 优点:安装简单(一行 pip 命令),资源占用低,适合笔记本(4GB 内存即可)。
- 局限性:不支持分布式部署,数据规模限于百万级,功能较 Standalone 少。
安装方式二:Milvus Standalone —— Docker
Milvus Standalone 通过单个 Docker 容器运行,快速部署单机环境(参考 Standalone Docker 文档)。它像一台“全能服务器”,整合 Milvus 和依赖(etcd、MinIO),适合中等规模数据。
检查 Docker:
docker --version
sudo service docker start
创建工作目录:
mkdir -p /home/milvus
cd /home/milvus
下载安装脚本:
curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/v2.5.11/scripts/standalone_embed.sh -o standalone_embed.sh chmod +x standalone_embed.sh
启动 Milvus:
bash standalone_embed.sh start
- 启动后,
milvus-standalone
容器在 19530 端口运行,嵌入 etcd(2379 端口)。 - 数据存储在
/home/milvus/volumes/milvus
,配置文件为embedEtcd.yaml
.
验证安装:
docker ps
应看到 milvus-standalone
运行。
访问 WebUI:打开浏览器,输入 http://127.0.0.1:9091/webui/
,检查界面是否加载。
测试 Python 连接:
pip3 install pymilvus==2.5.8from pymilvus import connections, utility connections.connect(host="localhost", port="19530") print(f"Milvus version: {utility.get_server_version()}")
停止和删除:
bash standalone_embed.sh stop
bash standalone_embed.sh delete
优点与局限性
- 优点:部署快速(几分钟),支持数据持久化,适合开发测试。
- 局限性:配置灵活性有限,不支持分布式扩展。