libcudart.so.12: cannot open shared object file: No such file or directory
这个错误信息 libcudart.so.12: cannot open shared object file: No such file or directory 明确指向了问题的核心:Milvus 容器内部缺少所需的 CUDA 12 运行时库。
这通常意味着 Docker 的 GPU 运行时(即 nvidia-container-toolkit)可能没有正确安装或配置,导致容器无法访问宿主机的 CUDA 库。
🔧 修复步骤
为了避免因权限混乱导致问题,请从第一步开始,严格按顺序执行。
第一步:清理旧容器
在开始修复前,我们先把之前可能出现问题的容器和镜像彻底移除,确保在一个干净的环境里重新开始。
# 停止并删除所有相关的容器和网络
sudo docker compose down -v
# 删除旧的、可能不兼容的 Milvus GPU 镜像
sudo docker rmi milvusdb/milvus:latest-gpu
第二步:重装 NVIDIA Container Toolkit
根据你的描述,nvidia-container-toolkit 很可能没有正确安装。请按照以下标准步骤进行安装和配置。
# 1. 配置稳定版仓库
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg \
&& curl -s -L https://nvidia.github.io/libnvidia-container/stable/deb/nvidia-container-toolkit.list | \
sed 's#deb https://#deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://#g' | \
sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
# 2. 安装 toolkit
sudo apt-get update
sudo apt-get install -y nvidia-container-toolkit
# 3. 配置 Docker 运行时
sudo nvidia-ctk runtime configure --runtime=docker
# 4. 重启 Docker 服务
sudo systemctl restart docker
第三步:验证 GPU 可访问性
安装完成后,必须验证 Docker 能否正常访问 GPU。这是确保 Milvus 成功启动的关键一步。
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:12.6.0-base-ubuntu24.04 nvidia-smi
- 如果命令成功执行并显示了你的 GPU 信息(如驱动版本、CUDA 版本等),说明 Docker 的 GPU 环境已正确配置。
- 如果命令失败,请暂停,仔细检查第二步的操作。
第四步:重新部署 Milvus GPU 版
确保一切正常后,我们就可以重新部署 GPU 版的 Milvus 了。
# 1. 下载最新的 GPU 版配置文件
wget https://github.com/milvus-io/milvus/releases/download/v2.6.17/milvus-standalone-docker-compose-gpu.yml -O docker-compose.yml
# 2. 可选:明确指定 GPU 设备
# 如果你的机器有多张 GPU,可以编辑 docker-compose.yml 文件,找到 standalone 服务,修改 device_ids: ["0"] 来指定使用第一张卡。
# 3. 启动服务
sudo docker compose up -d
# 4. 检查容器状态 (所有服务都应是 'Up' 状态)
sudo docker compose ps
第五步:最终验证
部署完成后,我们来验证 Milvus 是否真的用上了 GPU。
# 1. 查看 Milvus 日志,查找 GPU 相关的成功信息
sudo docker logs milvus-standalone 2>&1 | grep -i "gpu\|cuda"
# 2. 在宿主机上使用 nvidia-smi 查看 GPU 进程
nvidia-smi
如果在 nvidia-smi 的输出中看到了 milvus 进程,或者在日志里看到了 GPU is enabled 类似的信息,就说明你的 GPU 版 Milvus 已经成功运行了。
⚠️ 注意事项:版本兼容性
Milvus 的不同版本可能基于不同的 CUDA 版本构建。如果你使用的是较旧的 GPU 版 Milvus 镜像(如 v2.3.x 系列),它可能需要的是 libcudart.so.11 而不是 libcudart.so.12。建议使用最新的 Milvus 镜像版本。
更多推荐


所有评论(0)