安裝Milvus向量數(shù)據(jù)庫全過程
一、前言
本文主要是介紹Milvus向量數(shù)據(jù)庫的安裝,以及在安裝過程中遇到的問題和解決方法。
二、安裝
本次安裝Milvus向量數(shù)據(jù)庫是基于docker環(huán)境進(jìn)行安裝的,所以操作系統(tǒng)的內(nèi)核版本至少為3.10,否則無法利用docker進(jìn)行安裝。
Milvus向量數(shù)據(jù)庫分為gpu版本和內(nèi)存版本,一般使用的話內(nèi)存版本即可,要求操作系統(tǒng)的內(nèi)存不能低于8G、CPU不低于2C。
2.1、Docker的安裝
首先從Index of linux/static/stable/x86_64/ 地址下載docker安裝包,推薦使用V20.10以上的版本,本次自己采用的是docker-20.10.6.tgz。
把下載下來的docker安裝包下載到自己的服務(wù)器對應(yīng)目錄,該目錄和安裝目錄可以根據(jù)自己的實(shí)際要求進(jìn)行自定義。
2.1.1、解壓和配置目錄
[root@Centos7 milvus]# tar -xvf docker-20.10.6.tgz -C /app [root@Centos7 milvus]# cd /app/docker [root@Centos7 milvus]# mkdir bin [root@Centos7 milvus]# mv * ./bin [root@Centos7 milvus]# mkdir . /data/lib/docker
- bin:代表可執(zhí)行程序的目錄,出于好管理,自己單獨(dú)創(chuàng)建了一個bin目錄,并且把docker的可執(zhí)行文件放到了該目錄,可根據(jù)自己的實(shí)際情況進(jìn)行配置。
- /app/docker/data/lib/docker:是docker引擎在Linux系統(tǒng)中存儲docker數(shù)據(jù)的目錄,它包含了docker引擎的運(yùn)行時數(shù)據(jù)、容器鏡像、容器卷等相關(guān)文,默認(rèn)配置的目錄是/var/lib/docker,為了避免該目錄引發(fā)引起空間不足問題,特意更改了數(shù)據(jù)存放目錄,可根據(jù)自已實(shí)際情況進(jìn)行更改。
2.1.2、配置docker環(huán)境變量
[root@Centos7 milvus]# vi /etc/profile.d/docker.sh
添加以下內(nèi)容:
DOCKER_HOME=/app/docker PATH=$PATH:$DOCKER_HOME/bin export PATH DOCKER_HOME [root@Centos7 milvus]# source /etc/profile.d/docker.sh
2.1.3、添加docker服務(wù)啟動腳本
[root@Centos7 milvus]# vi /usr/lib/systemd/system/docker.service
添加以下內(nèi)容:
[Unit] Description=Docker Application Container Engine Documentation=https://docs.docker.com After=network-online.target firewalld.service Wants=network-online.target [Service] Type=notify #ExecStart=/app/docker/dockerd ExecStart=/app/docker/bin/dockerd --graph /app/docker/data/lib/docker --userland-proxy-path=/app/docker/bin/docker-proxy ExecReload=/bin/kill -s HUP $MAINPID LimitNOFILE=infinity LimitNPROC=infinity TimeoutStartSec=0 Delegate=yes KillMode=process Restart=on-failure StartLimitBurst=3 StartLimitInterval=60s [Install] WantedBy=multi-user.target [root@Centos7 milvus]# systemctl daemon-reload [root@Centos7 milvus]# systemctl start docker.service
如果沒有啟動啟來,并且用“journalctl -xe”查看報(bào)錯日志時發(fā)現(xiàn)有如下報(bào)錯信息:
Failed to start containerd: exec: "containerd": executable file not found in $PATH
是因?yàn)樯倭?ldquo;containerd”的包導(dǎo)致啟動失敗,需要安裝containerd.io-x.x.x-x.x.e17.x86_64.rpm,需要安裝該rpm包,該包下載地址:Index of linux/centos/7/x86_64/stable/Packages/。
安裝前一定再檢查一下以下的包有沒有安裝。
[root@Centos7 system]# rpm -qa|grep libseccomp libseccomp-2.3.1-4.el7.x86_64 [root@Centos7 system]# rpm -qa|grep libtool libtool-2.4.2-22.el7_3.x86_64 libtool-ltdl-2.4.2-22.el7_3.x86_64 [root@Centos7 system]# rpm -qa|grep lz4 lz4-1.8.3-1.el7.x86_64
如果沒有安裝的話,需要先安裝以上3個包之后,再安裝containerd.io的rpm包。
[root@Centos7 milvus]# rpm -ivh containerd.io-1.3.7-3.1.el7.x86_64.rpm [root@Centos7 milvus]# systemctl start containerd.service [root@Centos7 milvus]# systemctl start docker.service [root@Centos7 milvus]# systemctl enable containerd.service [root@Centos7 milvus]# systemctl enable docker.service [root@Centos7 milvus]# docker version [root@Centos7 app]# docker version Client: Version: 20.10.6 API version: 1.41 Go version: go1.13.15 Git commit: 370c289 Built: Fri Apr 9 22:42:10 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.6 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: 8728dd2 Built: Fri Apr 9 22:46:14 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.3.7 GitCommit: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc: Version: 1.0.0-rc10 GitCommit: dc9208a3303feef5b3839f4323d9beb36df0a9dd
2.1.4、修改docker鏡像源地址
如果不修改docker鏡像源的話,也可以拉取鏡像,但由于默認(rèn)是國外的鏡像源,在拉取的過程中速度有可能會比較慢,所以要把鏡像源更改為國內(nèi)的地址,提高拉取速度。
[root@Centos7 milvus]# vi /etc/docker/daemon.json
添加如下信息:
{
"registry-mirrors": ["http://hub-mirror.c.163.com","https://registry.docker-cn.com","https://docker.mirrors.ustc.edu.cn"]
}地址可以添加一個,也可以添加多個,添加完成之后,需要重啟docker.service,并且用docker info查看修改的配置是否生效。
[root@Centos7 milvus]# systemctl restart docker.service [root@Centos7 milvus]# docker info [root@Centos7 app]# docker info Client: Context: default Debug Mode: false Server: Containers: 4 Running: 3 Paused: 0 Stopped: 1 Images: 4 Server Version: 20.10.6 Storage Driver: overlay2 Backing Filesystem: xfs Supports d_type: true Native Overlay Diff: true userxattr: false Logging Driver: json-file Cgroup Driver: cgroupfs Cgroup Version: 1 Plugins: Volume: local Network: bridge host ipvlan macvlan null overlay Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog Swarm: inactive Runtimes: io.containerd.runc.v2 io.containerd.runtime.v1.linux runc Default Runtime: runc Init Binary: docker-init containerd version: 8fba4e9a7d01810a393d5d25a3621dc101981175 runc version: dc9208a3303feef5b3839f4323d9beb36df0a9dd init version: N/A (expected: de40ad007797e0dcd8b7126f27bb87401d224240) Security Options: seccomp Profile: default Kernel Version: 3.10.0-1160.el7.x86_64 Operating System: CentOS Linux 7 (Core) OSType: linux Architecture: x86_64 CPUs: 2 Total Memory: 9.607GiB Name: Centos7.9 ID: EK4A:NN53:KMFM:IH7C:4WL7:OPDJ:ZMML:GCXL:XZCP:SMFE:VMWU:K26G Docker Root Dir: /app/docker/data/lib/docker Debug Mode: false Registry: https://index.docker.io/v1/ Labels: Experimental: false Insecure Registries: 127.0.0.0/8 Registry Mirrors: http://hub-mirror.c.163.com/ https://registry.docker-cn.com/ https://docker.mirrors.ustc.edu.cn/ Live Restore Enabled: false Product License: Community Engine WARNING: IPv4 forwarding is disabled WARNING: bridge-nf-call-iptables is disabled WARNING: bridge-nf-call-ip6tables is disabled
標(biāo)紅部分說明配置的daemon.json的鏡像源生效了。
2.1.5、測試docker是否能正常拉取鏡像
[root@Centos7 docker]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx a378f10b3218: Pull complete 5b5e4b85559a: Pull complete 508092f60780: Pull complete 59c24706ed13: Pull complete 1a8747e4a8f8: Pull complete ad85f053b4ed: Pull complete 3000e3c97745: Pull complete error adding content digest to lease: sha256: 35e16351c585c0721f099bc638423cedc41efcd0f2da986f89ab441989e1768f: unknown method AddResource: not implemented
如果出現(xiàn)以上報(bào)錯,有可能是containerd.service和docker.service服務(wù)需要重啟進(jìn)行解決,但重啟之后還是報(bào)出同樣的錯,有可能是containerd.io的rpm包版本和所安裝的docker版本不兼容造成,需要更改containerd.io的rpm包的版本,并重新安裝,本次采用的是containerd.io-1.3.7-3.1.el7.x86_64.rpm。
更換containerd.io包的版本后,docker可以正常拉取鏡像文件,如下所示:
[root@Centos7 docker]# docker pull nginx Using default tag: latest latest: Pulling from library/nginx a378f10b3218: Pull complete 5b5e4b85559a: Pull complete 508092f60780: Pull complete 59c24706ed13: Pull complete 1a8747e4a8f8: Pull complete ad85f053b4ed: Pull complete 3000e3c97745: Pull complete Digest: sha256:35e16351c585c0721f099bc638423cedc41efcd0f2da986f89ab441989e1768f Status: Downloaded newer image for nginx:latest docker.io/library/nginx:latest
2.1.6、docker-compose安裝
下載地址:Releases · docker/compose · GitHub,可以下載最新版本,下載完成之后,把該文件改名放到docker的bin目錄即可。
[root@Centos7 milvus]# cp docker-compose-linux-x86_64 /app/docker/bin/docker-compose [root@Centos7 milvus]# source /etc/profile.d/docker.sh [root@Centos7 milvus]# docker-compose -v Docker Compose version v2.23.0
2.2、Python的安裝
本次采用python3.10以上的版本進(jìn)行安裝,版本太低的話,有可能以后模型與向量結(jié)合時會出現(xiàn)未知問題,所以采用python3.10以上的版本進(jìn)行安裝。
下載地址:Download Python | Python.org 本次采用的是3.10.13的版本包Python-3.10.13.tgz。
[root@Centos7 milvus]# tar -xvf Python-3.10.13.tgz [root@Centos7 milvus]# cd Python-3.10.13 [root@Centos7 milvus]# ./configure –prefix=/app/docker310 [root@Centos7 milvus]# make –j2 [root@Centos7 milvus]# make install
make -j2:主要是為了提高編譯速度,其是2是代表cpu的核心個數(shù),一般是核心個數(shù)的2倍,可采用或不采用,如果不采用,直接執(zhí)行make即可。
注:如果在編譯安裝的過程中有報(bào)錯,有可能是操作系統(tǒng)缺少一些開發(fā)包造成,可以根據(jù)報(bào)錯信息用yum安裝一下對應(yīng)有開發(fā)包即可,如:缺少zlib的開發(fā)包,直接安裝zlib-devel對應(yīng)包即可。
2.2.1、配置python環(huán)境變量
[root@Centos7 milvus]# vi /etc/profile.d/python.sh
添加如下內(nèi)容:
PYTHON_HOME=/app/python310 PATH=$PATH:$PYTHON_HOME/bin export PATH PYTHON_HOME [root@Centos7 milvus]# source /etc/profile.d/python.sh [root@Centos7 milvus]# python3 -V Python 3.10.13
2.3、Milvus的安裝
下載地址:Releases · milvus-io/milvus · GitHub 下載自己想用的版本即可,本次采用的是2.3.2的版本,下載時有2種類型可供選擇,gpu版本和內(nèi)存版本,本次采用的是內(nèi)存版本,把下載好的milvus-standalone-docker-compose.yml文件改名放到自己規(guī)劃好的目錄下,改成docker-compose.yml執(zhí)行安裝即可。
[root@Centos7 milvus]# cp milvus-standalone-docker-compose.yml /app/milvus [root@Centos7 milvus]# docker-compse up [root@Centos7 milvus]# docker-compse up [+] Running 23/23 ? minio 6 layers [??????] 0B/0B Pulled 302.2s ? c7e856e03741 Pull complete 117.1s ? c1ff217ec952 Pull complete 96.6s ? b12cc8972a67 Pull complete 110.3s ? 4324e307ea00 Pull complete 127.9s ? 152089595ebc Pull complete 127.7s ? 05f217fb8612 Pull complete 184.1s ? standalone 7 layers [???????] 0B/0B Pulled 404.1s ? d5fd17ec1767 Pull complete 69.5s ? 50e2e2559689 Pull complete 57.5s ? 9997e6050d5b Pull complete 104.0s ? 7061d965979a Pull complete 69.1s ? 3db6d0e6aa97 Pull complete 292.8s ? 1f27396f6efc Pull complete 82.2s ? fe556ec02776 Pull complete 99.2s ? etcd 7 layers [???????] 0B/0B Pulled 159.5s ? dbba69284b27 Pull complete 75.1s ? 270b322b3c62 Pull complete 22.0s ? 7c21e2da1038 Pull complete 19.9s ? cb4f77bfee6c Pull complete 38.1s ? e5485096ca5d Pull complete 32.2s ? 3ea3736f61e1 Pull complete 46.9s ? 1e815a2c4f55 Pull complete 52.9s [+] Building 0.0s (0/0) docker:default [+] Running 4/4 ? Network milvus Created 0.2s ? Container milvus-minio Created 3.1s ? Container milvus-etcd Created 3.1s ? Container milvus-standalone Created
注:初次使用安裝環(huán)境,有可能會卡住,或下載安裝一半就會斷掉,此時可以嘗試重啟docker.service服務(wù)后,再次執(zhí)行docker-compose up。
此時安裝過程比較慢,請耐心等待即可。
安裝完成之后會直接進(jìn)行啟動,docker-compose up是前臺啟動,可以使用docker-compose down停掉后,用docker-compose up -d后臺啟動,啟動完成之后,可以使用docker-compose ps 進(jìn)行查看運(yùn)行狀態(tài)。
[root@Centos7 milvus]# docker-compose ps [root@Centos7 milvus]# docker-compose ps NAME IMAGE COMMAND SERVICE CREATED STATUS PORTS milvus-etcd quay.io/coreos/etcd:v3.5.5 "etcd -advertise-cli…" etcd 25 hours ago Up 25 hours (healthy) 2379-2380/tcp milvus-minio minio/minio:RELEASE.2023-03-20T20-16-18Z "/usr/bin/docker-ent…" minio 25 hours ago Up 25 hours (healthy) 0.0.0.0:9000-9001->9000-9001/tcp, :::9000-9001->9000-9001/tcp milvus-standalone milvusdb/milvus:v2.3.2 "/tini -- milvus run…" standalone 25 hours ago Up 25 hours (healthy) 0.0.0.0:9091->9091/tcp, :::9091->9091/tcp, 0.0.0.0:19530->19530/tcp, :::19530->19530/tcp
注:使用docker-compose命令執(zhí)行時,一定要在和yml文件同級目錄下執(zhí)行,否則執(zhí)行時會報(bào)出以下錯誤:
[root@Centos7 app]# docker-compose ps no configuration file provided: not found
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Docker中Dockerfile之容器中運(yùn)行MyEclipse搭建的JavaWeb項(xiàng)目
本篇文章主要介紹了Docker中Dockerfile之容器中運(yùn)行MyEclipse搭建的JavaWeb項(xiàng)目,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-02-02
基于spring-boot和docker-java實(shí)現(xiàn)對docker容器的動態(tài)管理和監(jiān)控功能[附完整源碼下載]
Docker 是一個開源的應(yīng)用容器引擎,和傳統(tǒng)的虛擬機(jī)技術(shù)相比,Docker 容器性能開銷極低,因此也廣受開發(fā)者喜愛。這篇文章主要介紹了基于spring-boot和docker-java實(shí)現(xiàn)對docker容器的動態(tài)管理和監(jiān)控 ,需要的朋友可以參考下2019-06-06
詳解Docker 容器基礎(chǔ)系統(tǒng)鏡像打包
這篇文章主要介紹了詳解Docker 容器基礎(chǔ)系統(tǒng)鏡像打包,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-12-12
docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉庫方式
這篇文章主要介紹了docker/docker desktop for window環(huán)境下創(chuàng)建本地鏡像倉庫方式,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03

