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

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

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

前言

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

環(huán)境介紹

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

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

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

1.1 下載安裝腳本

由于 raw.githubusercontent.com 在國內經常被屏蔽,我們改用 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 也失敗,你可以手動創(chuàng)建腳本內容(文末附有簡潔版腳本)。

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

編輯 /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"
  ]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker

1.3 啟動 Milvus

bash standalone_embed.sh start

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

端口說明

  • 19530:gRPC 服務端口(SDK 連接用)
  • 9091:WebUI 管理界面(可通過瀏覽器訪問)
  • 2379:內嵌 etcd 端口(一般不用關心)

二、讓 Milvus 持續(xù)駐留,告別“自動掉線”

很多同學反映容器運行一段時間后就自己停了,尤其是在鎖屏或重啟虛擬機之后。問題核心在于:

  1. 容器沒有自動重啟策略
  2. 虛擬機鎖屏后可能掛起(Suspend)

2.1 添加容器自動重啟策略

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

docker update --restart unless-stopped milvus-standalone

這樣即使容器異常退出(如 OOM、etcd 故障),Docker 也會自動把它拉起來。

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

千萬不要systemctl mask sleep.target ... ,它會導致圖形界面無法啟動或黑屏!取而代之,我們編輯 /etc/systemd/logind.conf 并重啟服務:

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

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

2.3 限制 Docker 日志防止磁盤爆滿(血的教訓?。?/h3>

如果容器日志無限制,幾天就可能占滿整個虛擬機磁盤,導致容器退出(狀態(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

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

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

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

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

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

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

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

# 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. 重新用腳本啟動(會自動生成新的 etcd 并掃描舊數(shù)據(jù))
bash standalone_embed.sh start
docker update --restart unless-stopped milvus-standalone

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

3.3 磁盤空間爆滿的排查

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

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

四、常見錯誤與解決

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

五、管理與連接

5.1 Attu 圖形化連接

下載 Attu 桌面版或使用 Docker 版,連接地址:127.0.0.1:19530(如果在虛擬機內部訪問)。
如果從宿主機訪問,需在 VMware 中配置端口轉發(fā)(NAT 模式)或使用橋接網絡,防火墻放行 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

六、總結與最佳實踐

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

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

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

相關文章

  • 基于Docker實現(xiàn)Redis主從+哨兵搭建的示例實踐

    基于Docker實現(xiàn)Redis主從+哨兵搭建的示例實踐

    本文主要介紹了基于Docker實現(xiàn)Redis主從+哨兵搭建的示例實踐,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • 使用Docker構建開發(fā)環(huán)境的方法步驟(?Windows和mac)

    使用Docker構建開發(fā)環(huán)境的方法步驟(?Windows和mac)

    利用Docker,我們可以做很多事情。所以本文就詳細介紹了使用Docker構建開發(fā)環(huán)境的方法步驟,分為?Windows和mac版本,具有一定的參考價值,感興趣的可以了解一下
    2021-12-12
  • 在 Centos 7.9 中如何安裝與配置 Docker 20.10.18

    在 Centos 7.9 中如何安裝與配置 Docker 20.10.

    這篇文章主要介紹了在 Centos 7.9 中如何安裝與配置 Docker 20.10.18,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2024-01-01
  • Docker容器日志查看和清理的圖文教程

    Docker容器日志查看和清理的圖文教程

    docker容器在運行過程中會產生日志,日志的量跟具體的容器有關,下面這篇文章主要給大家介紹了關于Docker容器日志查看和清理的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2023-02-02
  • window-docker的容器使用宿主機音頻設備的過程詳解

    window-docker的容器使用宿主機音頻設備的過程詳解

    這篇文章主要介紹了window-docker的容器使用宿主機音頻設備的相關知識,本文給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2025-05-05
  • Docker容器使用jenkins部署web項目(總結)

    Docker容器使用jenkins部署web項目(總結)

    這篇文章主要介紹了Docker容器使用jenkins部署web項目(總結),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-08-08
  • docker下安裝confluence全過程

    docker下安裝confluence全過程

    文章詳細介紹了如何在虛擬機上安裝和配置Docker、Java環(huán)境、MySQL和Confluence,首先,文章指導如何卸載并安裝Docker,然后配置虛擬機的IP和網絡設置,接著,介紹如何在虛擬機上安裝JDK,并配置MySQL和Confluence,最后,提供了完整的安裝步驟和一些注意事項
    2025-02-02
  • Docker部署前后端分離項目的實現(xiàn)示例

    Docker部署前后端分離項目的實現(xiàn)示例

    本文主要介紹了Docker部署前后端分離項目的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Docker+Jenkins實現(xiàn)一鍵自動化部署項目的圖文教學

    Docker+Jenkins實現(xiàn)一鍵自動化部署項目的圖文教學

    Jenkins是一個廣泛使用的開源持續(xù)集成工具,它能自動化構建,測試和部署軟件項目,本文主要介紹了關于docker搭建Jenkins實現(xiàn)一鍵自動化部署項目,需要的朋友可以參考下
    2025-05-05
  • 基于Kubernetes和Docke實現(xiàn)留言簿案例

    基于Kubernetes和Docke實現(xiàn)留言簿案例

    這篇文章主要介紹了基于Kubernetes和Docke實現(xiàn)留言簿案例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10

最新評論

孟津县| 塔城市| 怀柔区| 大埔县| 西峡县| 灵璧县| 南充市| 江孜县| 晋中市| 遂川县| 昂仁县| 广元市| 潜江市| 上高县| 通化市| 大厂| 伊川县| 安西县| 天长市| 遵义市| 芜湖市| 宜章县| 岑巩县| 栖霞市| 林西县| 汉寿县| 行唐县| 玛纳斯县| 全椒县| 宿松县| 漳浦县| 兴城市| 铅山县| 黄山市| 三台县| 北票市| 揭西县| 东阳市| 南漳县| 澳门| 寻乌县|