最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Docker環(huán)境下Milvus向量數(shù)據(jù)庫(kù)的穩(wěn)定部署與常見(jiàn)問(wèn)題總結(jié)

 更新時(shí)間:2026年07月02日 10:29:39   作者:毋語(yǔ)天  
Milvus是一個(gè)開(kāi)源的向量數(shù)據(jù)庫(kù),專(zhuān)門(mén)設(shè)計(jì)用于處理海量向量數(shù)據(jù)的存儲(chǔ)、索引和檢索,這篇文章主要介紹了Docker環(huán)境下Milvus向量數(shù)據(jù)庫(kù)的穩(wěn)定部署與常見(jiàn)問(wèn)題的相關(guān)資料,需要的朋友可以參考下

前言

Milvus 作為高性能開(kāi)源向量數(shù)據(jù)庫(kù),在 AI 應(yīng)用中被廣泛使用。但在 Docker 環(huán)境下部署時(shí),很多小伙伴會(huì)遇到鏡像拉取失敗、容器反復(fù)重啟、磁盤(pán)空間爆滿(mǎn)、數(shù)據(jù)“不翼而飛”、鎖屏后服務(wù)中斷等一系列問(wèn)題。本文將結(jié)合我在 VMware 虛擬機(jī) + CentOS 7 環(huán)境下的真實(shí)排坑經(jīng)歷,從零到一,帶你完成一個(gè)穩(wěn)定、持續(xù)運(yùn)行的 Milvus 獨(dú)立部署,并附上各類(lèi)常見(jiàn)故障的解決方案。

環(huán)境介紹

  • 宿主機(jī):Windows 10 + VMware Workstation 16
  • 虛擬機(jī):CentOS 7.9(帶圖形界面)
  • Docker 版本:20.10.x
  • Milvus 版本:v2.6.2(standalone 模式)
  • 其他工具:Attu(Milvus 可視化管理)、pymilvus、Dify(知識(shí)庫(kù)應(yīng)用)

一、安裝 Milvus:使用官方腳本

Milvus 官方提供了 standalone_embed.sh 腳本,可以一鍵拉取鏡像并啟動(dòng)內(nèi)嵌 etcd 的 standalone 版本,非常適合本地開(kāi)發(fā)與測(cè)試。

1.1 下載安裝腳本

由于 raw.githubusercontent.com 在國(guó)內(nèi)經(jīng)常被屏蔽,我們改用 jsDelivr CDN 下載:

curl -sfL https://cdn.jsdelivr.net/gh/milvus-io/milvus/scripts/standalone_embed.sh -o standalone_embed.sh
chmod +x standalone_embed.sh

如果 CDN 也失敗,你可以手動(dòng)創(chuàng)建腳本內(nèi)容(文末附有簡(jiǎn)潔版腳本)。

1.2 配置 Docker 鏡像加速(必須)

編輯 /etc/docker/daemon.json,添加國(guó)內(nèi)鏡像源:

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.3 啟動(dòng) Milvus

bash standalone_embed.sh start

腳本會(huì)自動(dòng)拉取鏡像(默認(rèn) milvusdb/milvus:v2.6.2),創(chuàng)建容器并等待約 90 秒初始化??吹?“Start successfully.” 即安裝成功。

端口說(shuō)明

  • 19530:gRPC 服務(wù)端口(SDK 連接用)
  • 9091:WebUI 管理界面(可通過(guò)瀏覽器訪(fǎng)問(wèn))
  • 2379:內(nèi)嵌 etcd 端口(一般不用關(guān)心)

二、讓 Milvus 持續(xù)駐留,告別“自動(dòng)掉線(xiàn)”

很多同學(xué)反映容器運(yùn)行一段時(shí)間后就自己停了,尤其是在鎖屏或重啟虛擬機(jī)之后。問(wèn)題核心在于:

  1. 容器沒(méi)有自動(dòng)重啟策略
  2. 虛擬機(jī)鎖屏后可能掛起(Suspend)

2.1 添加容器自動(dòng)重啟策略

在腳本啟動(dòng)成功后,立即執(zhí)行:

docker update --restart unless-stopped milvus-standalone

這樣即使容器異常退出(如 OOM、etcd 故障),Docker 也會(huì)自動(dòng)把它拉起來(lái)。

2.2 安全地禁止虛擬機(jī)掛起(非常重要?。?/h3>

千萬(wàn)不要systemctl mask sleep.target ... ,它會(huì)導(dǎo)致圖形界面無(wú)法啟動(dòng)或黑屏!取而代之,我們編輯 /etc/systemd/logind.conf 并重啟服務(wù):

sudo sed -i 's/^#HandleSuspendKey=.*/HandleSuspendKey=ignore/' /etc/systemd/logind.conf
sudo sed -i 's/^#HandleLidSwitch=.*/HandleLidSwitch=ignore/' /etc/systemd/logind.conf
sudo systemctl restart systemd-logind

這樣鎖屏或合上筆記本蓋都不會(huì)觸發(fā)掛起,且完全不影響桌面環(huán)境。

2.3 限制 Docker 日志防止磁盤(pán)爆滿(mǎn)(血的教訓(xùn)?。?/h3>

如果容器日志無(wú)限制,幾天就可能占滿(mǎn)整個(gè)虛擬機(jī)磁盤(pán),導(dǎo)致容器退出(狀態(tài) Exited)。在 /etc/docker/daemon.json 中追加日志限制:

sudo tee /etc/docker/daemon.json <<-'EOF'
{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.1ms.run",
    "https://docker.m.daocloud.io"
  ],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF
sudo systemctl restart docker

配置后已經(jīng)運(yùn)行的容器不會(huì)立即生效,需要重建容器或重啟 Docker 后重新創(chuàng)建容器。如果當(dāng)前容器未限制日志,可先 docker stop milvus-standalone && docker rm milvus-standalone 再重新運(yùn)行腳本啟動(dòng)即可。

三、數(shù)據(jù)持久化與恢復(fù)

3.1 數(shù)據(jù)到底存在哪兒?

腳本啟動(dòng)時(shí)會(huì)自動(dòng)將當(dāng)前目錄下的 volumes/milvus 映射到容器內(nèi)的 /var/lib/milvus,因此所有向量數(shù)據(jù)和 etcd 元數(shù)據(jù)都在宿主機(jī)上。只要這個(gè)目錄不被刪除,容器怎么換都丟不了數(shù)據(jù)。

千萬(wàn)不要執(zhí)行 bash standalone_embed.sh delete,這個(gè)命令會(huì)徹底刪除數(shù)據(jù)目錄!

3.2 “數(shù)據(jù)不見(jiàn)了”怎么辦?

常見(jiàn)場(chǎng)景:重啟 Milvus 后,用 Attu 或 pymilvus 連上發(fā)現(xiàn)集合為空。這大概率不是數(shù)據(jù)丟了,而是內(nèi)嵌 etcd 元數(shù)據(jù)損壞或服務(wù)未正常啟動(dòng)。可通過(guò)以下步驟修復(fù):

# 1. 停止故障容器
docker stop milvus-standalone
docker rm milvus-standalone

# 2. 備份并重置 etcd 元數(shù)據(jù)(原有的向量數(shù)據(jù)還在)
mv /root/volumes/milvus/etcd /root/volumes/milvus/etcd_backup_$(date +%Y%m%d%H%M%S)

# 3. 重新用腳本啟動(dòng)(會(huì)自動(dòng)生成新的 etcd 并掃描舊數(shù)據(jù))
bash standalone_embed.sh start
docker update --restart unless-stopped milvus-standalone

啟動(dòng)后,之前的 collection 和向量數(shù)據(jù)會(huì)重新出現(xiàn)。

3.3 磁盤(pán)空間爆滿(mǎn)的排查

突然發(fā)現(xiàn)根分區(qū) 100% 占用,常見(jiàn)元兇是:

  • 容器內(nèi)部數(shù)據(jù)(忘記掛載外部卷):如果你某次用了錯(cuò)誤的 docker run -v 或沒(méi)用掛載,Milvus 會(huì)將數(shù)據(jù)全部寫(xiě)入容器可寫(xiě)層,快速占滿(mǎn)磁盤(pán)。此時(shí) docker container prune -f 刪除已停止的舊容器即可瞬間釋放幾十 GB。
  • Docker 日志無(wú)限增長(zhǎng):日志大小限制必須提前設(shè)置,否則很快就吞掉磁盤(pán)。

四、常見(jiàn)錯(cuò)誤與解決

錯(cuò)誤信息原因解決辦法
iptables: No chain/target/match by that nameDocker 的 iptables 規(guī)則鏈丟失重啟 Docker 服務(wù):sudo systemctl restart docker
etcdserver: request timed outetcd 連接超時(shí),元數(shù)據(jù)損壞按上述“重置 etcd 元數(shù)據(jù)”步驟處理
容器反復(fù)重新啟動(dòng) (Exited 255)通常為 etcd 損壞或 OOM查看日志 docker logs milvus-standalone,并考慮增加內(nèi)存或重置 etcd
pymilvus 連接 ECONNRESET服務(wù)未完全就緒或 etcd 故障等待 1-2 分鐘,或檢查日志;若 etcd 報(bào)錯(cuò)則重置 etcd
Attu 連接成功但看不到集合etcd 元數(shù)據(jù)丟失同樣需要重置 etcd
虛擬機(jī)鎖屏后 Milvus 停止系統(tǒng)掛起導(dǎo)致按上面方法配置 logind.conf

五、管理與連接

5.1 Attu 圖形化連接

下載 Attu 桌面版或使用 Docker 版,連接地址:127.0.0.1:19530(如果在虛擬機(jī)內(nèi)部訪(fǎng)問(wèn))。
如果從宿主機(jī)訪(fǎng)問(wèn),需在 VMware 中配置端口轉(zhuǎn)發(fā)(NAT 模式)或使用橋接網(wǎng)絡(luò),防火墻放行 9091/19530/5432 等端口。

5.2 pymilvus 連接示例

from pymilvus import connections
connections.connect(host="localhost", port="19530")

5.3 備份 Milvus 數(shù)據(jù)

建議定期備份:

sudo tar -czf /backup/milvus_$(date +%Y%m%d).tar.gz /root/volumes/milvus

六、總結(jié)與最佳實(shí)踐

  • 啟動(dòng)腳本:始終用 standalone_embed.sh start,避免手動(dòng) docker run 時(shí)遺漏掛載參數(shù)。
  • 自動(dòng)重啟:創(chuàng)建后立即 docker update --restart unless-stopped
  • 防掛起:使用 HandleSuspendKey=ignore 代替 systemctl mask。
  • 日志限制:部署之初就配置 Docker deamon 日志上限。
  • 數(shù)據(jù)備份:定期打包 /root/volumes/milvus。
  • 清理舊容器:每周運(yùn)行 docker container prune -f 回收空間。

按照這樣的配置,你的 Milvus 服務(wù)就能在 Docker 環(huán)境中非常穩(wěn)定地運(yùn)行,無(wú)論是開(kāi)發(fā)調(diào)試還是作為 Dify 等應(yīng)用的向量存儲(chǔ)后端,都不會(huì)輕易掉線(xiàn)。

到此這篇關(guān)于Docker環(huán)境下Milvus向量數(shù)據(jù)庫(kù)的穩(wěn)定部署與常見(jiàn)問(wèn)題總結(jié)的文章就介紹到這了,更多相關(guān)Docker下Milvus向量數(shù)據(jù)庫(kù)部署內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評(píng)論

鄂尔多斯市| 甘谷县| 江城| 琼结县| 石柱| 文水县| 玉树县| 吉木萨尔县| 无棣县| 肥城市| 无棣县| 开化县| 略阳县| 确山县| 平阳县| 东莞市| 信丰县| 简阳市| 子洲县| 永泰县| 息烽县| 和林格尔县| 广安市| 军事| 大兴区| 兴城市| 绥芬河市| 沅陵县| 平潭县| 无为县| 偏关县| 乌拉特后旗| 汕头市| 横峰县| 清流县| 宁蒗| 尖扎县| 密山市| 屏边| 远安县| 郯城县|