Ai应用第一篇:Milvus部署Ubuntu 22+docker+Milvus(Standalone)

发布时间:2026/8/27 17:34:52
Ai应用第一篇:Milvus部署Ubuntu 22+docker+Milvus(Standalone) 一、Milvus简介MilvusMilvus | High-Performance Vector Database Built for Scalehttps://milvus.io/官网https://milvus.io/ 是由 Zilliz 公司开发的‌开源向量数据库‌专为高效处理非结构化数据如图像、视频、音频的向量化存储与检索而设计‌。它采用云原生架构支持存储计算分离和 Kubernetes 部署能弹性扩展至百亿级向量规模‌。核心特性‌高性能检索‌支持 GPU 加速和多种索引算法如 CAGRA、HNSW实现毫秒级近似最近邻搜索‌。例如三维向量相似性搜索可快速定位最接近目标的数据点‌。‌混合查询能力‌支持同时筛选向量相似度和结构化字段如查找相似图片时限定特定类别标签‌‌开发友好性‌提供 Python/Java/Go 等多语言 SDK轻量版 Milvus Lite 支持pip install快速部署‌兼容 PyTorch 等主流框架应用场景‌非结构化数据‌如文本、语音、图像、视频等通过嵌入技术转化为向量后存储。 ‌‌人工智能‌在聊天机器人、网络搜索等场景中实现相似度检索。 ‌架构特点‌分层设计‌分为接入层、协调服务层、工作节点和存储层各层独立扩展和容灾。‌共享存储‌计算节点与存储分离支持数据持久化和增量数据摄取二、环境准备Ubuntu 22.04.5 LTS (GNU/Linux 5.15.0-144-generic x86_64)2.1.配置soures.list可以直接去编辑/etc/apt/sources.list也可以参考下面的命令#将主软件源地址替换为阿里云镜像 sudo sed -i s/archive.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list #将安全更新源替换为阿里云镜像 sudo sed -i s/security.ubuntu.com/mirrors.aliyun.com/g /etc/apt/sources.list sudo apt-get update2.2.安装docker2.2.1.下载docker的debwget https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/dists/jammy/pool/stable/amd64/containerd.io_1.7.26-1_amd64.deb wget https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce_28.0.2-1~ubuntu.22.04~jammy_amd64.deb wget https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-ce-cli_28.0.2-1~ubuntu.22.04~jammy_amd64.deb wget https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-buildx-plugin_0.22.0-1~ubuntu.22.04~jammy_amd64.deb wget https://mirrors.huaweicloud.com/docker-ce/linux/ubuntu/dists/jammy/pool/stable/amd64/docker-compose-plugin_2.34.0-1~ubuntu.22.04~jammy_amd64.deb2.2.2.安装docker命令如下dpkg -i ./containerd.io_1.7.26-1_amd64.deb ./docker-ce_28.0.2-1~ubuntu.22.04~jammy_amd64.deb ./docker-ce-cli_28.0.2-1~ubuntu.22.04~jammy_amd64.deb ./docker-buildx-plugin_0.22.0-1~ubuntu.22.04~jammy_amd64.deb ./docker-compose-plugin_2.34.0-1~ubuntu.22.04~jammy_amd64.deb #或者命令 dpkg -i *.deb安装后的版本信息如下docker compose version #Docker Compose version v2.34.0 docker version #Client: Docker Engine - Community # Version: 28.0.2 # API version: 1.48 # Go version: go1.23.7 # Git commit: 0442a73 # Built: Wed Mar 19 14:36:46 2025 # OS/Arch: linux/amd64 # Context: default # #Server: Docker Engine - Community # Engine: # Version: 28.0.2 # API version: 1.48 (minimum version 1.24) # Go version: go1.23.7 # Git commit: bea4de2 # Built: Wed Mar 19 14:36:46 2025 # OS/Arch: linux/amd64 # Experimental: false # containerd: # Version: 1.7.26 # GitCommit: 753481ec61c7c8955a23d6ff7bc8e4daed455734 # runc: # Version: 1.2.5 # GitCommit: v1.2.5-0-g59923ef # docker-init: # Version: 0.19.0 # GitCommit: de40ad02.3.3 配置/etc/docker/daemon.json#cat /etc/docker/daemon.json { registry-mirrors: [ https://docker.m.daocloud.io, https://docker.nju.edu.cn, https://hub-mirror.c.163.com, https://registry.docker-cn.com ] } #重启docker systemctl restart docker || service docker restart #查看docker运行状态 systemctl status docker #●docker.service - Docker Application Container Engine # Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: #enabled) # Active: active (running) since Mon 2025-08-18 08:42:46 CST; 1h 19min ago #TriggeredBy: ● docker.socket三、安装Milvus3.1.1下载脚本curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed.sh3.1.2 运行./standalone_embed.sh start #Milvus is running.遇到的问题错误1/standalone_embed.sh start#./standalone_embed.sh please use bash standalone_embed.sh restart|start|stop|upgrade|delete rootiZ2zefmyqi46e90ttn3odtZ:~/docker# ./standalone_embed.sh start Unable to find image milvusdb/milvus:v2.6.0 locally docker: Error response from daemon: Get https://registry-1.docker.io/v2/: context deadline exceeded Run docker run --help for more information Start failed.原因是/ /etc/docker/daemon.json里面配置的源地址不能用建议采用科学上网的模式因为那些镜像的服务器说不定哪天会抽风。修改daemon.json文件后需要重启一下服务sudo systemctl daemon-reload sudo systemctl restart docker sudo systemctl status docker问题2如果打不开自己新建一个standalone_embed.sh直接复制下面的内容#!/usr/bin/env bash # Licensed to the LF AI Data foundation under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # License); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an AS IS BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. run_embed() { cat EOF embedEtcd.yaml listen-client-urls: http://0.0.0.0:2379 advertise-client-urls: http://0.0.0.0:2379 quota-backend-bytes: 4294967296 auto-compaction-mode: revision auto-compaction-retention: 1000 EOF cat EOF user.yaml # Extra config to override default milvus.yaml EOF if [ ! -f ./embedEtcd.yaml ] then echo embedEtcd.yaml file does not exist. Please try to create it in the current directory. exit 1 fi if [ ! -f ./user.yaml ] then echo user.yaml file does not exist. Please try to create it in the current directory. exit 1 fi sudo docker run -d \ --name milvus-standalone \ --security-opt seccomp:unconfined \ -e ETCD_USE_EMBEDtrue \ -e ETCD_DATA_DIR/var/lib/milvus/etcd \ -e ETCD_CONFIG_PATH/milvus/configs/embedEtcd.yaml \ -e COMMON_STORAGETYPElocal \ -e DEPLOY_MODESTANDALONE \ -v $(pwd)/volumes/milvus:/var/lib/milvus \ -v $(pwd)/embedEtcd.yaml:/milvus/configs/embedEtcd.yaml \ -v $(pwd)/user.yaml:/milvus/configs/user.yaml \ -p 19530:19530 \ -p 9091:9091 \ -p 2379:2379 \ --health-cmdcurl -f http://localhost:9091/healthz \ --health-interval30s \ --health-start-period90s \ --health-timeout20s \ --health-retries3 \ milvusdb/milvus:v2.6.0 \ milvus run standalone 1 /dev/null } wait_for_milvus_running() { echo Wait for Milvus Starting... while true do ressudo docker ps|grep milvus-standalone|grep healthy|wc -l if [ $res -eq 1 ] then echo Start successfully. echo To change the default Milvus configuration, add your settings to the user.yaml file and then restart the service. break fi sleep 1 done } start() { ressudo docker ps|grep milvus-standalone|grep healthy|wc -l if [ $res -eq 1 ] then echo Milvus is running. exit 0 fi ressudo docker ps -a|grep milvus-standalone|wc -l if [ $res -eq 1 ] then sudo docker start milvus-standalone 1 /dev/null else run_embed fi if [ $? -ne 0 ] then echo Start failed. exit 1 fi wait_for_milvus_running } stop() { sudo docker stop milvus-standalone 1 /dev/null if [ $? -ne 0 ] then echo Stop failed. exit 1 fi echo Stop successfully. } delete_container() { ressudo docker ps|grep milvus-standalone|wc -l if [ $res -eq 1 ] then echo Please stop Milvus service before delete. exit 1 fi sudo docker rm milvus-standalone 1 /dev/null if [ $? -ne 0 ] then echo Delete milvus container failed. exit 1 fi echo Delete milvus container successfully. } delete() { read -p Please confirm if youd like to proceed with the delete. This operation will delete the container and data. Confirm with y for yes or n for no. check if [ $check y ] ||[ $check Y ];then delete_container sudo rm -rf $(pwd)/volumes sudo rm -rf $(pwd)/embedEtcd.yaml sudo rm -rf $(pwd)/user.yaml echo Delete successfully. else echo Exit delete exit 0 fi } upgrade() { read -p Please confirm if youd like to proceed with the upgrade. The default will be to the latest version. Confirm with y for yes or n for no. check if [ $check y ] ||[ $check Y ];then ressudo docker ps -a|grep milvus-standalone|wc -l if [ $res -eq 1 ] then stop delete_container fi curl -sfL https://raw.githubusercontent.com/milvus-io/milvus/master/scripts/standalone_embed.sh -o standalone_embed_latest.sh \ bash standalone_embed_latest.sh start 1 /dev/null \ echo Upgrade successfully. else echo Exit upgrade exit 0 fi } case $1 in restart) stop start ;; start) start ;; stop) stop ;; upgrade) upgrade ;; delete) delete ;; *) echo please use bash standalone_embed.sh restart|start|stop|upgrade|delete ;; esac