制作动画的网站模板,趣闲赚,做公司网站用哪个公司比较好,网站建设的违约责任避开这五个坑#xff0c;用阿里云镜像源在Ubuntu上丝滑部署Milvus向量数据库 最近在本地环境搭建Milvus向量数据库#xff0c;准备跑一些AI应用的原型。本以为照着官方文档一步步来就行#xff0c;结果从系统更新到镜像拉取#xff0c;一路磕磕绊绊#xff0c;踩了不少坑。…避开这五个坑用阿里云镜像源在Ubuntu上丝滑部署Milvus向量数据库最近在本地环境搭建Milvus向量数据库准备跑一些AI应用的原型。本以为照着官方文档一步步来就行结果从系统更新到镜像拉取一路磕磕绊绊踩了不少坑。尤其是在国内网络环境下那些默认的国外源和镜像仓库速度慢得让人抓狂动不动就超时、卡死。折腾了大半天终于摸索出了一套相对顺畅的部署流程核心就是用阿里云的镜像源来全面加速。这篇文章我就把自己遇到的五个典型“坑”以及对应的解决方案整理出来希望能帮到同样在国内网络环境下挣扎的开发者们。整个过程基于Ubuntu系统目标是让Milvus的安装从“痛苦煎熬”变成“一键顺畅”。1. 环境准备避开系统更新与软件源配置的陷阱万事开头难部署Milvus的第一步——准备Ubuntu环境——就布满了第一个大坑系统软件包更新卡死或极其缓慢。很多教程第一步就是sudo apt update但在国内如果不更换软件源这个命令很可能在连接海外官方源时超时或者以KB/s的速度龟速下载直接让安装流程卡在起点。1.1 更换阿里云Ubuntu软件源解决这个问题的根本方法是在开始任何安装之前先将系统的APT软件源替换为国内的镜像源。阿里云提供了稳定快速的Ubuntu镜像服务。首先备份原有的源列表文件是个好习惯sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup接下来编辑源列表文件。这里以Ubuntu 20.04 LTS (Focal Fossa)为例其他版本请替换focal为相应的版本代号如jammy对应22.04。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这两个命令会将文件中所有archive.ubuntu.com和security.ubuntu.com的地址替换为mirrors.aliyun.com。注意如果你使用的是其他Linux发行版或版本建议直接访问阿里云开源镜像站https://developer.aliyun.com/mirror/查找对应系统的详细配置说明手动修改更为稳妥。更新软件包列表此时速度应该有质的飞跃sudo apt update顺利执行后你会看到从mirrors.aliyun.com快速拉取索引信息的提示。1.2 安装基础依赖与工具更新源之后安装一些后续步骤必需的依赖包就非常快了sudo apt-get install -y ca-certificates curl gnupg lsb-release这些工具的作用分别是ca-certificates: 管理SSL证书确保HTTPS连接安全。curl: 命令行下载工具用于获取密钥和文件。gnupg: GNU隐私卫士用于验证软件包的签名和添加APT仓库的GPG密钥。lsb-release: 提供标准的LSBLinux标准基础发行版信息方便脚本获取系统版本。2. Docker引擎安装绕开官方仓库拉取超时Milvus依赖于Docker容器环境因此安装Docker是第二步。这里会遇到第二个坑Docker官方GPG密钥添加失败或Docker仓库安装包下载超时。Docker的默认安装脚本和仓库都位于国外网络不稳定时极易失败。2.1 使用阿里云Docker CE镜像源我们将使用阿里云提供的Docker CE镜像源来加速安装。整个过程分为几个清晰的步骤第一步添加Docker的官方GPG密钥。虽然使用阿里云源但验证软件包完整性的GPG密钥仍需从Docker官方获取。为了确保成功可以使用国内相对友好的镜像路径或者先下载到本地。curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg第二步设置稳定版的阿里云Docker CE仓库。这里的关键是使用lsb_release -cs命令自动获取你的Ubuntu版本代号并写入APT源配置。echo \ deb [arch$(dpkg --print-architecture) signed-by/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu \ $(lsb_release -cs) stable | sudo tee /etc/apt/sources.list.d/docker.list /dev/null这个命令创建了一个新的源文件/etc/apt/sources.list.d/docker.list指向阿里云的Docker仓库。第三步更新APT包索引并安装Docker引擎。sudo apt update sudo apt-get install -y docker-ce docker-ce-cli containerd.io此时所有安装包都将从阿里云镜像站快速下载。2.2 验证Docker安装并配置用户组安装完成后启动Docker服务并设置开机自启sudo systemctl start docker sudo systemctl enable docker运行一个简单的测试镜像验证安装是否成功sudo docker run hello-world如果看到“Hello from Docker!”等欢迎信息说明Docker引擎已正常运行。为了避免每次使用docker命令都要加sudo可以将当前用户加入docker用户组sudo usermod -aG docker $USER重要执行此命令后你需要完全注销当前会话并重新登录或者重启系统才能使组权限生效。3. Docker Compose安装解决GitHub Releases下载缓慢Milvus的Standalone单机版本通过docker-compose.yml文件定义和启动多个关联容器因此需要安装Docker Compose。第三个坑随之而来从GitHub Releases下载Docker Compose二进制文件速度极慢甚至中断。3.1 利用国内镜像加速下载我们可以通过替换下载URL中的域名使用GitHub的国内镜像站来加速。这里以安装较稳定的1.29.2版本为例请根据实际需要检查最新版本。# 使用加速地址下载docker-compose二进制文件 sudo curl -L https://ghproxy.com/https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose # 赋予二进制文件可执行权限 sudo chmod x /usr/local/bin/docker-compose # 可选创建软链接到/usr/bin确保在PATH中 sudo ln -sf /usr/local/bin/docker-compose /usr/bin/docker-compose命令中的https://ghproxy.com/是一个GitHub文件代理服务能显著提升下载速度。你也可以尝试其他镜像源如https://download.fastgit.org/。验证安装docker-compose --version输出类似docker-compose version 1.29.2, build xxxxxxx即表示成功。3.2 Docker Compose与Docker CLI的版本兼容性虽然我们安装了特定版本的Docker Compose但需要注意从Docker Compose V2开始它更多地以Docker CLI插件docker compose的形式存在。Milvus的Compose文件通常两者都兼容。如果你后续遇到问题可以尝试使用插件模式# 安装Docker Compose插件同样可能需要镜像加速 sudo apt-get install -y docker-compose-plugin安装后你可以使用docker compose命令注意没有横杠来替代docker-compose功能基本一致。4. 拉取Milvus镜像与启动应对大型镜像拉取超时环境就绪来到核心步骤获取Milvus的Docker Compose文件并启动服务。这里是第四个坑的聚集地从Docker Hub拉取Milvus及其组件etcd, minio等的镜像时超时或失败。这些镜像体积不小网络不稳时很容易前功尽弃。4.1 配置Docker Daemon镜像加速器最有效的解决方案是为Docker Daemon配置国内镜像加速器。阿里云、腾讯云、网易云等都提供免费的Docker Hub镜像加速服务。以阿里云为例首先登录阿里云容器镜像服务控制台在“镜像工具”-“镜像加速器”中获取你的专属加速器地址形如https://xxxx.mirror.aliyuncs.com。然后创建或修改Docker Daemon配置文件sudo tee /etc/docker/daemon.json -EOF { registry-mirrors: [https://你的专属码.mirror.aliyuncs.com] } EOF请将https://你的专属码.mirror.aliyuncs.com替换为你实际获得的地址。可以配置多个镜像源用逗号隔开。重启Docker服务使配置生效sudo systemctl daemon-reload sudo systemctl restart docker验证加速器是否生效docker info在输出信息中查找Registry Mirrors应该能看到你配置的加速器地址。4.2 下载并启动Milvus Standalone现在拉取镜像的速度应该大大改善。首先下载Milvus Standalone的Docker Compose配置文件。同样如果从GitHub直接下载慢可以尝试先下载到本地再上传或使用wget配合代理。这里我们直接使用官方地址配置了镜像加速器后docker-compose up时会从加速器拉取镜像# 下载最新稳定版的standalone compose文件以v2.3.3为例 wget https://github.com/milvus-io/milvus/releases/download/v2.3.3/milvus-standalone-docker-compose.yml -O docker-compose.yml提示务必检查Milvus官方文档使用与你的需求匹配的版本。生产环境建议使用明确的稳定版本号而非latest标签。使用Docker Compose在后台启动所有服务sudo docker-compose -f docker-compose.yml up -d或者使用Docker Compose插件命令sudo docker compose -f docker-compose.yml up -d-d参数表示在后台运行。这个命令会依次拉取并启动Etcd元数据存储、MinIO对象存储和Milvus Standalone查询节点、索引节点等容器。检查服务状态sudo docker-compose ps或者sudo docker compose ps当所有服务的状态(State)都显示为Up时表示Milvus已成功启动。5. 连接与验证解决Attu管理界面连接失败服务启动后通常我们会使用Milvus的可视化管理工具Attu进行连接和管理。第五个坑常常出现在这里Attu容器启动后无法连接到后端的Milvus服务页面提示连接错误。5.1 启动Attu并注意网络与IP首先确保Milvus服务正在运行。然后启动Attu容器。关键点在于正确设置MILVUS_URL环境变量。如果你的Milvus和Attu运行在同一台机器的Docker中并且使用默认的docker-compose网络那么Milvus的服务地址通常是Compose文件中定义的服务名milvus-standalone和端口19530。sudo docker run -d \ --name attu \ -p 8000:3000 \ -e MILVUS_URLmilvus-standalone:19530 \ zilliz/attu:v2.3.3这里我们使用了-d在后台运行并将容器命名为attu把容器内的3000端口映射到宿主机的8000端口。然而更常见的问题是跨网络或IP指定不正确。如果你从宿主机的浏览器访问Attu或者Milvus以其他方式部署需要明确指定Milvus服务的可访问IP地址。首先查出Milvus Standalone容器的实际IP在Docker默认的bridge网络或Compose创建的网络中# 找到运行Milvus的容器ID或名称 sudo docker ps | grep milvus-standalone # 假设容器名为 project_milvus-standalone_1查看其网络信息 sudo docker inspect -f {{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}} project_milvus-standalone_1假设得到的IP是172.18.0.2。那么启动Attu的命令应改为sudo docker run -d \ --name attu \ -p 8000:3000 \ -e MILVUS_URL172.18.0.2:19530 \ zilliz/attu:v2.3.35.2 访问Attu并完成初始化连接在浏览器中打开http://你的服务器IP地址:8000。首次访问你会看到连接配置页面。关键参数填写如下Address: 这里填写你上一步确定的Milvus地址。如果Attu和Milvus在同一个Docker Compose项目下用服务名milvus-standalone如果用IP则填如172.18.0.2。Port:19530(默认)Username/Password: Standalone模式默认没有启用身份验证留空即可。点击连接如果一切配置正确几秒钟后就会成功进入Attu的主界面。在这里你可以管理集合Collection、进行向量插入与搜索、查看系统状态等非常方便。如果连接失败请按以下顺序排查检查Milvus容器是否健康运行docker-compose logs milvus-standalone查看有无错误日志。检查网络连通性在Attu容器内尝试ping或curlMilvus的IP和端口。检查防火墙确保宿主机的19530端口如果从外部访问或Docker网络内部是通畅的。确认版本兼容性Attu的版本最好与Milvus版本匹配或兼容。6. 性能调优与日常维护要点成功部署并连接只是开始要让Milvus在生产或开发环境中稳定高效地运行还需要注意一些配置和维护上的细节。这部分内容虽然不一定是“坑”但忽略它们可能导致后续使用体验不佳。6.1 资源配置与数据持久化默认的docker-compose.yml配置可能不适合你的数据规模和性能需求。主要需要调整两个方面a) 容器资源限制编辑docker-compose.yml为milvus-standalone服务添加或修改资源限制例如services: milvus-standalone: image: milvusdb/milvus:v2.3.3 container_name: milvus-standalone deploy: resources: limits: memory: 8G cpus: 4.0 ...这限制了容器最多使用8GB内存和4个CPU核心防止其占用过多宿主机资源。b) 数据持久化默认配置下MinIO和Etcd的数据存储在容器内部容器删除后数据会丢失。为了持久化需要将宿主机目录挂载到容器内。services: etcd: ... volumes: - ./etcd_data:/etcd minio: ... volumes: - ./minio_data:/minio_data milvus-standalone: ... volumes: - ./milvus_data:/var/lib/milvus这样会在docker-compose.yml同级目录下创建etcd_data、minio_data、milvus_data文件夹来持久化数据。修改配置后需要重新启动服务sudo docker-compose down sudo docker-compose up -d6.2 常用运维命令与日志查看掌握几个关键的Docker Compose命令能让日常运维轻松很多。命令作用示例docker-compose ps查看本项目下所有容器的状态sudo docker-compose psdocker-compose logs查看所有容器的日志尾部sudo docker-compose logsdocker-compose logs [服务名]查看指定服务的日志sudo docker-compose logs milvus-standalonedocker-compose down停止并移除所有容器、网络sudo docker-compose downdocker-compose restart [服务名]重启指定服务sudo docker-compose restart milvus-standalonedocker-compose exec [服务名] bash进入指定容器的Shellsudo docker-compose exec milvus-standalone bash当遇到问题时查看日志是首要步骤。例如搜索性能异常可以重点关注Milvus的日志sudo docker-compose logs --tail100 -f milvus-standalone--tail100显示最后100行-f持续跟踪输出。6.3 升级与备份策略随着Milvus版本迭代你可能需要升级。升级前务必备份数据备份如果你按照6.1节配置了数据持久化只需确保docker-compose down后宿主机上的etcd_data、minio_data等目录安全即可。更稳妥的方式是压缩备份整个目录。升级修改docker-compose.yml中的镜像标签如将v2.3.3改为v2.4.0然后执行sudo docker-compose pull # 拉取新镜像 sudo docker-compose down # 停止旧容器 sudo docker-compose up -d # 用新镜像启动容器Milvus通常保证相邻小版本的向前兼容但大版本升级如1.x到2.x可能需要数据迁移工具请务必查阅官方升级文档。整个流程走下来最大的感触就是“镜像源”和“加速器”是国内开发者必须熟练掌握的利器。从系统APT源到Docker仓库再到GitHub文件和Docker Hub镜像每一步的加速配置都能节省大量等待时间避免因网络问题导致的莫名失败。把这些配置写成脚本以后在新机器上部署就能真正做到一气呵成。最后多看看docker-compose logs的输出很多错误信息其实都提示得很清楚善用日志能快速定位大部分问题。