目录
一、前言
二、安装
2.1、Docker的安装
2.1.1、解压和配置目录
2.1.2、配置docker环境变量
2.1.3、添加docker服务启动脚本
2.1.4、修改docker镜像源地址
2.1.5、测试docker是否能正常拉取镜像
2.1.6、docker-compose安装
2.2、Python的安装
2.2.1、配置python环境变量
2.3、Milvus的安装
本文主要是介绍Milvus向量数据库的安装,以及在安装过程中遇到的问题和解决方法。
本次安装Milvus向量数据库是基于docker环境进行安装的,所以操作系统的内核版本至少为3.10,否则无法利用docker进行安装。
Milvus向量数据库分为gpu版本和内存版本,一般使用的话内存版本即可,要求操作系统的内存不能低于8G、CPU不低于2C。
首先从Index of linux/static/stable/x86_64/ 地址下载docker安装包,推荐使用V20.10以上的版本,本次自己采用的是docker-20.10.6.tgz。
把下载下来的docker安装包下载到自己的服务器对应目录,该目录和安装目录可以根据自己的实际要求进行自定义。
[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:代表可执行程序的目录,出于好管理,自己单独创建了一个bin目录,并且把docker的可执行文件放到了该目录,可根据自己的实际情况进行配置。
/app/docker/data/lib/docker:是docker引擎在Linux系统中存储docker数据的目录,它包含了docker引擎的运行时数据、容器镜像、容器卷等相关文,默认配置的目录是/var/lib/docker,为了避免该目录引发引起空间不足问题,特意更改了数据存放目录,可根据自已实际情况进行更改。
[root@Centos7 milvus]# vi /etc/profile.d/docker.sh
添加以下内容:
DOCKER_HOME=/app/docker
PATH=$PATH:$DOCKER_HOME/bin
export PATH DOCKER_HOME
[root@Centos7 milvus]# source /etc/profile.d/docker.sh
[root@Centos7 milvus]# vi /usr/lib/systemd/system/docker.service
添加以下内容:
[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”查看报错日志时发现有如下报错信息:
Failed to start containerd: exec: "containerd": executable file not found in $PATH
是因为少了“containerd”的包导致启动失败,需要安装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 |
如果不修改docker镜像源的话,也可以拉取镜像,但由于默认是国外的镜像源,在拉取的过程中速度有可能会比较慢,所以要把镜像源更改为国内的地址,提高拉取速度。
[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 |
标红部分说明配置的daemon.json的镜像源生效了。
[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 |
如果出现以上报错,有可能是containerd.service和docker.service服务需要重启进行解决,但重启之后还是报出同样的错,有可能是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 |
下载地址: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
本次采用python3.10以上的版本进行安装,版本太低的话,有可能以后模型与向量结合时会出现未知问题,所以采用python3.10以上的版本进行安装。
下载地址: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的核心个数,一般是核心个数的2倍,可采用可采用,如果不采用,直接执行make即可。
注:如果在编译安装的过程中有报错,有可能是操作系统缺少一些开发包造成,可以根据报错信息用yum安装一下对应有开发包即可,如:缺少zlib的开发包,直接安装zlib-devel对应包即可。
[root@Centos7 milvus]# vi /etc/profile.d/python.sh
添加如下内容:
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
下载地址:Releases · milvus-io/milvus · GitHub 下载自己想用的版本即可,本次采用的是2.3.2的版本,下载时有2种类型可供选择,gpu版本和内存版本,本次采用的是内存版本,把下载好的milvus-standalone-docker-compose.yml文件改名放到自己规划好的目录下,改成docker-compose.yml执行安装即可。
[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 |
注:初次使用安装环境,有可能会卡住,或下载安装一半就会断掉,此时可以尝试重启docker.service服务后,再次执行docker-compose up。
此时安装过程比较慢,请耐心等待即可。
安装完成之后会直接进行启动,docker-compose up是前台启动,可以使用docker-compose down停掉后,用docker-compose up -d后台启动,启动完成之后,可以使用docker-compose ps 进行查看运行状态。
[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命令执行时,一定要在和yml文件同级目录下执行,否则执行时会报出以下错误:
[root@Centos7 app]# docker-compose ps
no configuration file provided: not found