在 Windows 本地用 Docker 部署向量模型(bge-m3)

一、启动 Ollama

方案一:PowerShell 续行符

复制代码
docker run -d `
  --name ollama `
  -p 11434:11434 `
  -v ollama:/root/.ollama `
  --restart=always `
  ollama/ollama

方案二:单行执行(推荐)

复制代码
docker run -d --name ollama -p 11434:11434 -v ollama:/root/.ollama --restart=always ollama/ollama

二、确认并拉取模型

第一步:确认模型是否存在

在 CMD 里执行:

复制代码
docker exec ollama ollama list

检查输出中是否有 bge-m3。如果是空的或只有其他模型,请执行下一步。

第二步:拉取模型

复制代码
docker exec ollama ollama pull bge-m3

注意:务必盯紧日志,看到success才算成功。

正常流程如下:

复制代码
pulling manifest
pulling 4c4d9b... 100% ████████████████ 2.2 GB
pulling manifest ok
verifying sha256 ok
success

若拉取卡死或报错,通常是 Docker Desktop 内存不足或网络代理问题。

第三步:验证模型

拉取完成后立即检查:

复制代码
docker exec ollama ollama list

确认看到以下内容:

复制代码
NAME        ID      SIZE    MODIFIED
bge-m3:latest   ...   2.2 GB   ...

低配方案:bge-small-zh-v1.5

若机器内存小于 8GB,请改用 512 维模型:

复制代码
docker exec ollama ollama pull bge-small-zh-v1.5

三、测试向量接口

PowerShell 写法

复制代码
Invoke-RestMethod `
  -Uri "http://localhost:11434/api/embeddings" `
  -Method Post `
  -ContentType "application/json" `
  -Body '{"model":"bge-m3","prompt":"测试向量"}'

CMD 写法

复制代码
curl.exe http://localhost:11434/api/embeddings ^
  -H "Content-Type: application/json" ^
  -d "{""model"":""bge-m3"",""prompt"":""测试向量""}"

四、Windows 环境配置

启用 WSL2

复制代码
wsl --set-default-version 2

Docker Desktop 资源配置

进入 Settings -> Resources -> Advanced:

  • Memory:建议 6GB 以上(bge-m3)或 4GB 以上(bge-small)

  • CPUs:建议 4 核以上

  • 勾选 Use WSL 2 instead of Hyper-V

  • 取消 Windows containers

五、常见问题

模型未找到

复制代码
model "bge-m3" not found, try pulling it first

解决:执行 docker exec ollama ollama list确认模型存在,不存在则重新 pull。

JSON 解析错误

复制代码
invalid character 'm' looking for beginning of object key string

原因:PowerShell 单引号未被解析。

解决:使用上文 Invoke-RestMethod 写法。

拉取模型卡死

解决:进入容器内部拉取,或更换网络环境。

复制代码
docker exec -it ollama ollama pull bge-m3

六、数据说明

  • 模型存储:Docker Named Volume (ollama:/root/.ollama)

  • 物理路径:\wsl$\docker-desktop-data...\volumes\ollama_data

  • 内存占用:模型加载消耗宿主机物理内存,可通过 docker stats ollama 查看

七、服务验证

复制代码
# 检查容器存活
curl.exe http://localhost:11434
# 返回 {} 即正常

# 查看已安装模型
docker exec ollama ollama list
相关推荐
DO_Community1 小时前
百亿参数开源模型托管成本账:从按 Token 计费到单卡 GPU 服务器怎么选?
运维·服务器·开源·llm·agent
凡人叶枫2 小时前
Effective C++ 条款37:绝不重新定义继承而来的缺省参数值
linux·c++·windows
xsc-xyc2 小时前
CasaOS + Docker 挂载外接硬盘部署 Jellyfin 私人影院
运维·docker·容器
码云骑士2 小时前
27-Docker部署Django(上)-从2GB到180MB的镜像瘦身实战
docker·容器·django
日取其半万世不竭2 小时前
PostgreSQL 跑在 Docker 里怎么备份?恢复成功才算备份成功
数据库·docker·postgresql
至此流年莫相忘2 小时前
WSL2 下 Docker Desktop 完全配置指南:从安装到极速体验
运维·docker·容器
ccino .2 小时前
【电脑的睡眠和休眠区别】
windows
万能的知了2 小时前
K8s到底需不需要GPU节点?集群资源分配的底层逻辑
云原生·容器·kubernetes
极客先躯2 小时前
高级java每日一道面试题-2026年02月12日-实战篇[Docker]-什么是容器的 Seccomp 配置?如何自定义?
java·运维·分布式·docker·容器·自动化·文件