Milvus基于docker主机外挂实践
一、安装docker
与我之前写的原博客:ubuntu安装milvus向量数据库,获取key不同,原博客获取key已经过时
# 更新Ubuntu软件包列表和已安装软件的版本:
sudo apt update# 安装Ubuntu系统的依赖包
sudo apt-get install ca-certificates curl gnupg lsb-release# 创建 GPG 密钥存储目录(首先,创建一个存储 GPG 密钥的目录,如果该目录不存在:)
sudo mkdir -p /etc/apt/keyrings# 下载并保存 Docker 的 GPG 密钥(使用 curl 命令下载 Docker 的 GPG 密钥并将其保存到 /etc/apt/keyrings 目录中:)
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo tee /etc/apt/keyrings/docker.asc# 添加 Docker 仓库(然后,添加 Docker 的官方仓库,并使用 signed-by 参数指定 GPG 密钥文件的位置:)
# $(lsb_release -cs) 会自动替换为你当前的 Ubuntu 版本代号(例如,jammy 对应 Ubuntu 22.04)。
echo "deb [signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null# 更新 APT 软件包列表(更新 APT 软件包列表,使新的 Docker 仓库生效:)
sudo apt-get update# 添加Docker软件源
ository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable"# 安装 Docker(如果更新成功,你可以安装 Docker:)
sudo apt-get install docker-ce docker-ce-cli containerd.io# 启动Docker服务
sudo systemctl start docker
sudo systemctl status docker
同原博客
{
"registry-mirrors": ["https://docker.registry.cyou",
"https://docker-cf.registry.cyou",
"https://dockercf.jsdelivr.fyi",
"https://docker.jsdelivr.fyi",
"https://dockertest.jsdelivr.fyi",
"https://mirror.aliyuncs.com",
"https://dockerproxy.com",
"https://mirror.baidubce.com",
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://docker.mirrors.sjtug.sjtu.edu.cn",
"https://docker.mirrors.ustc.edu.cn",
"https://mirror.iscas.ac.cn",
"https://docker.rainbond.cc"
]
}
二、安装docker compose
原博客的是V1,V1已经过时了,现在安装的是V2 也就是执行命令的时候不再是 docker-compose 而是中间不加 -
# 1. 更新包列表
sudo apt-get update# 2. 安装插件(通常安装 docker-ce 时已经包含,如果已安装可跳过)
sudo apt-get install docker-compose-plugin# 3. 验证安装
docker compose version
# 输出类似:Docker Compose version v2.XX.X
三、下载milvus的Compose文件
如果无法ping通github 则加上代理 # 如果还不行,尝试第三个 (使用 gh.idayer.com)
wget https://gh.idayer.com/https://github.com/milvus-io/milvus/releases/download/v2.2.16/milvus-standalone-docker-compose.yml -O docker-compose.yml
查看docker-compose.yml被下载的路径是啥
# 在整个系统中搜索(需要sudo权限,可能稍慢)
sudo find / -name "docker-compose.yml" 2>/dev/null
由于Docker Compose 需要在yml中显示定义name字段,所以将yml移动到/home目录下,例如如果原路径是/docker-compose.yml
# 首先确保您在根目录 /
cd /# 将 docker-compose.yml 文件移动到 /home 目录
sudo mv docker-compose.yml /home/# 检查文件是否已移动到 /home 目录
ls -la /home/docker-compose.yml
四、创建主机目录并设置权限
# 创建总目录
sudo mkdir -p /media/kyrf/机械硬盘/guazaiData/milvus
# 创建所有需要的子目录
sudo mkdir -p /media/kyrf/机械硬盘/guazaiData/milvus/volumes/{etcd,minio,milvus,logs,conf}
# 更改所有者,确保Docker有写入权限(重要!)
sudo chown -R 1000:1000 /media/kyrf/机械硬盘/guazaiData/milvus/volumes/
五、修改docker-compose.yml
nano docker-compose.yml
修改后的docker-compose.yml
name:milvusStandalone
services:etcd:container_name: milvus-etcdimage: quay.io/coreos/etcd:v3.5.5environment:- ETCD_AUTO_COMPACTION_MODE=revision- ETCD_AUTO_COMPACTION_RETENTION=1000- ETCD_QUOTA_BACKEND_BYTES=4294967296- ETCD_SNAPSHOT_COUNT=50000volumes:- /media/kyrf/机械硬盘/guazaiData/milvus/volumes/etcd:/etcdcommand: etcd -advertise-client-urls=http://127.0.0.1:2379 -listen-client-urls http://0.0.0.0:2379 --data-dir /etcdhealthcheck:test: ["CMD", "etcdctl", "endpoint", "health"]interval: 30stimeout: 20sretries: 3minio:container_name: milvus-minioimage: minio/minio:RELEASE.2023-03-20T20-16-18Zenvironment:MINIO_ACCESS_KEY: minioadminMINIO_SECRET_KEY: minioadminports:- "9001:9001"- "9000:9000"volumes:- /media/kyrf/机械硬盘/guazaiData/milvus/volumes/minio:/minio_datacommand: minio server /minio_data --console-address ":9001"healthcheck:test: ["CMD", "curl", "-f", "http://localhost:9000/minio/health/live"]interval: 30stimeout: 20sretries: 3standalone:container_name: milvus-standaloneimage: milvusdb/milvus:v2.3.12command: ["milvus", "run", "standalone"]security_opt:- seccomp:unconfinedenvironment:ETCD_ENDPOINTS: etcd:2379MINIO_ADDRESS: minio:9000volumes:- /media/kyrf/机械硬盘/guazaiData/milvus/volumes/milvus:/var/lib/milvushealthcheck:test: ["CMD", "curl", "-f", "http://localhost:9091/healthz"]interval: 30sstart_period: 90stimeout: 20sretries: 3ports:- "19530:19530"- "9091:9091"depends_on:- "etcd"- "minio"networks:default:name: milvus
六、启动服务
先进入到包含docker-compose.yml 的目录下 ,我们这里是吧yml文件移动到了/home下
sudo docker compose up -d
七、启动attu,浏览(http://192.168.0.238:8000)
docker run -p 8000:3000 -e MILVUS_URL=192.168.0.238:19530 zilliz/attu:v2.3.9