Skip to content

Docker 部署 ollama 使用 qwen 模型

文档:https://docs.ollama.com/docker

通用模型:https://ollama.com/library/qwen3.5:9b 推荐 16GB, 不少于 8 GB

编码模型:https://ollama.com/library/qwen2.5-coder:7b 8GB 实测跑不动,太慢了。

普通人还是别折腾了,跑不动,根本跑不动。

拉取镜像并启动

shell
# 镜像 3.13GB
docker pull ollama/ollama:0.18.1

# 启动
docker run \
--name ollama \
-p 11434:11434 \
--restart=unless-stopped \
-v /opt/ollama:/root/.ollama \
-d ollama/ollama:0.18.1

拉取 qwen3.5:9b 模型

shell
# 方式1:进入容器内部执行(推荐)第一个 ollama 为容器名称。第二个 ollama为容器里面的命令。
docker exec -it ollama ollama pull qwen3.5:9b

# 方式2:外部通过API拉取(效果一致)
curl http://localhost:11434/api/pull -d '{
  "name": "qwen3.5:9b"
}'

测试模型是否可用

shell
# 方式1:在本地运行。容器内交互式对话。第一个 ollama 为容器名称。第二个 ollama为容器里面的命令。
docker exec -it ollama ollama run qwen3.5:9b
# 输入测试指令:比如 "写一个Java计算斐波那契数列的函数",回车即可得到代码
shell
# 方式2:API调用(编程集成用)
curl http://localhost:11434/api/generate -d '{
  "model": "qwen3.5:4b",
  "prompt": "写一个Java计算斐波那契数列的函数",
  "stream": false  # 非流式输出,便于查看结果
}'

查看已下载的模型

shell
# 如果是 Docker 环境(当前场景)第一个 ollama 为容器名称。第二个 ollama为容器里面的命令。
docker exec -it ollama ollama list

# 如果是本地 Ollama 环境(补充参考)
ollama list

删除指定模型

shell
# Docker 环境删除 qwen3.5:9b(你的高内存模型)第一个 ollama 为容器名称。第二个 ollama为容器里面的命令。
docker exec -it ollama ollama rm qwen3.5:9b

# 本地环境删除示例(补充参考)
ollama rm qwen3.5:9b

# 也可以用模型 ID 删(从 ollama list 中获取)
docker exec -it ollama ollama rm 1234567890

# -f 强制删除
docker exec -it ollama ollama rm -f qwen3.5:9b

# 删除模型后,Ollama 可能会残留少量缓存文件,可通过以下命令彻底清理
# Docker 环境进入容器
docker exec -it ollama sh

# 清理 Ollama 缓存(容器内执行)
ollama prune

# 或直接一键执行(无需进入容器)
docker exec -it ollama ollama prune

qwen3.5:4bqwen3.5:4b-q4_K_M 的差异说明

在 Ollama 中,qwen3.5:4bqwen3.5:4b-q4_K_M 核心差异在于量化精度与量化算法——后者是明确指定了 4bit K_M 量化的版本,前者是 Ollama 预设的默认 4bit 量化版本(底层也基于 K_M 算法,但命名更简化)。下面拆解具体区别和选择逻辑:

核心概念先理清

在解释区别前,先明确两个关键术语(新手友好版):

  • 4B:模型参数量为 40 亿,是 Qwen3.5 系列的轻量版本,适合低内存设备;
  • 量化:通过降低模型参数的数值精度(如从 16bit 降到 4bit),减少内存占用,牺牲少量精度换可运行性;
  • Q4_K_M:是当前主流的 4bit 量化算法(属于 GGUF 格式的 K 系列量化),K 代表针对大模型优化的新一代量化算法,M 代表「混合精度」(对不同层采用不同量化策略),是平衡精度和内存的最优 4bit 方案。

两者的具体区别

维度qwen3.5:4b(默认版)qwen3.5:4b-q4_K_M(显式指定版)
量化核心默认为 Q4_K_M 量化(Ollama 预设)明确指定 Q4_K_M 量化,无歧义
内存占用~2.5GB(运行时总占用 3-4GB)~2.5GB(和默认版完全一致)
精度/响应质量与 Q4_K_M 无差异量化算法明确,精度可控
命名逻辑简化命名,面向普通用户精确命名,面向需要明确量化参数的用户
兼容性依赖 Ollama 版本(旧版可能用老算法)强制使用 Q4_K_M,跨版本更稳定

关键细节拆解

为什么默认版 qwen3.5:4b 本质和 Q4_K_M 一致?

Ollama 对 Qwen3.5 系列的预设规则是:所有未指定量化后缀的 4B/8B/14B 版本,默认采用 Q4_K_M 量化(这是 Ollama 官方为平衡性能和精度选择的最优 4bit 方案)。

  • qwen3.5:4b = qwen3.5:4b-q4_K_M(底层完全相同);
  • 类似的,qwen3.5:8b = qwen3.5:8b-q4_K_M,以此类推。

显式指定 q4_K_M 的意义

虽然两者底层一致,但显式指定后缀有两个核心价值:

  • 无歧义:避免 Ollama 版本更新后默认量化算法变更(比如未来默认改成 Q4_0),保证模型量化策略固定;

  • 可追溯:在配置/脚本中明确量化参数,团队协作或部署时更清晰,比如:

    properties
    # 显式指定,可读性更强
    spring.ai.ollama.chat.model=qwen3.5:4b-q4_K_M
    # 简化版,依赖 Ollama 预设
    spring.ai.ollama.chat.model=qwen3.5:4b

其他量化后缀的对比(拓展)

如果看到其他后缀(如 q4_0/q5_K_M),可参考下表理解差异(以 4B 模型为例):

量化版本内存占用精度适用场景
Q4_0~2.2GB略低极致省内存(如 4GB 设备)
Q4_K_M~2.5GB平衡首选(默认)
Q5_K_M~2.8GB更优内存充足(如 8GB 设备)

总结

  1. 核心等价qwen3.5:4bqwen3.5:4b-q4_K_M 的简化命名,两者量化算法、内存占用、响应质量完全一致;
  2. 选择建议
    • 普通使用:选 qwen3.5:4b 即可,命名简洁;
    • 生产环境/精准配置:选 qwen3.5:4b-q4_K_M,明确量化策略,避免版本变更风险;
  3. 关键结论:两者无性能/精度差异,仅命名和配置明确性不同,4GB 物理内存即可流畅运行(系统占用+模型共 3-4GB)。

扩展提示

  • 若你的设备内存≤4GB,优先选 qwen3.5:4b-q4_0(比 Q4_K_M 省约 300MB 内存);
  • 若内存≥8GB,可尝试 qwen3.5:4b-q5_K_M(精度更高,响应质量更好);
  • 验证量化版本:可通过 ollama show qwen3.5:4b --details 查看模型详情,会显示 quantization_level: Q4_K_M

离线环境下 export/import 模型

qwen3.5:9b 模型为例:

docker环境

导出

shell
# 检查。确保 ollama 容器正在运行
docker ps | grep ollama

# export 导出到容器中的 /tmp 目录
docker exec -it <你的ollama容器> ollama export qwen3.5:9b /tmp/qwen3.5-9b.tar.gz

# 把文件从容器复制到宿主机当前工作目录
docker cp <你的ollama容器>:/tmp/qwen3.5-9b.tar.gz .

# 现在你本地就有了:qwen3.5-9b.tar.gz

导入:先把 tar.gz 复制到离线机器

shell
#  把文件复制进 Docker 容器
docker cp qwen3.5-9b.tar.gz <你的ollama容器>:/tmp/

# 执行 import(离线加载)
docker exec -it <你的ollama容器> ollama import /tmp/qwen3.5-9b.tar.gz

# 验证
docker exec -it <你的ollama容器> ollama list

# 看到 qwen3.5:9b 就成功了

本地环境

shell
# 联网机器
ollama pull qwen3.5:9b
# 生成约6.6GB包
ollama export qwen3.5:9b qwen3.5-9b.tar.gz

# 离线机器
# 导入时,自动恢复原名 qwen3.5:9b
ollama import qwen3.5-9b.tar.gz

# 正常使用
ollama run qwen3.5:9b