2024年群晖NAS Docker部署AI大模型实战指南:新手也能快速上手的完整教程
在群晖NAS上部署大语言模型,是实现本地智能助理的高效方式。然而,许多用户在Container Manager就绪后,仍会遭遇容器启动失败或运行无响应的问题。这通常源于几个核心配置疏漏:镜像拉取网络中断、容器分配的CPU或内存资源不足、端口冲突,或是关键环境变量未正确设置。
针对这些挑战,我们梳理出三种经过实测的部署策略,分别适配不同的技术场景和操作偏好。无论你倾向于图形化界面、追求命令行精准控制,还是需要应对无外网环境,都能找到对应的解决方案。
一、图形界面部署:Ollama + Llama 2(轻量交互首选)
对于不熟悉Docker命令、希望通过图形界面快速上手的用户,Container Manager的可视化部署是最佳入口。此方案尤其适合部署Llama 2-7B这类经过量化的轻量级模型,操作直观,门槛较低。
首先,确认DSM桌面上的Container Manager处于“已启动”状态。随后按步骤操作:
打开Container Manager,进入“注册表”标签页。在搜索框输入ollama/ollama,定位官方镜像后点击“下载”。请注意,镜像体积约4.5GB,稳定的网络连接是成功拉取的关键。
下载完成后,在“映像”标签页找到该镜像,双击启动容器创建向导。以下配置点需重点关注:
在“卷”设置中,建议创建两个文件夹映射。其一指向/volume1/docker/ollama/models,用于持久化存储模型文件,避免容器删除后重复下载。其二映射至/root/.ollama,这是Ollama的核心工作目录,必须确保读写权限。
接下来配置“端口设置”。容器默认使用11434端口,将其映射到NAS主机的相同端口即可。若该端口已被占用(例如由其他服务使用),可更换为11435等空闲端口,但需注意后续调用API时需同步调整地址。
“环境”变量是常被忽略的环节。请务必添加键值对:OLLAMA_HOST=0.0.0.0:11434。此设置指示Ollama服务监听所有网络接口并开放API。缺少它,可能导致无法从局域网内其他设备访问模型服务。
最后,在“资源限制”部分,建议取消CPU和内存的使用率上限。大模型推理是资源密集型任务,配额不足极易导致运行过程中被系统终止,并抛出OOMKilled错误。为模型容器提供充足的资源,是保障其稳定运行的基础。
二、命令行部署:DeepSeek-R1(精准控制之道)
图形化界面虽便捷,但在资源精细调控方面灵活性不足。当需要绑定特定CPU核心、分配GPU显存,或部署带有特殊参数的模型时,通过SSH使用docker run命令进行部署,能提供更精准的控制。这种方式特别适合DS923+、DS1821+等支持PCIe扩展的高性能机型。
第一步,在群晖控制面板中启用SSH功能。路径为“控制面板 > 终端机和SNMP”,勾选“启动SSH功能”,端口通常保持默认的22。
随后,使用PuTTY、Termius等工具连接至NAS,并使用admin账户登录。为获得完整操作权限,建议执行sudo -i切换至root用户。
接下来进入命令行部署阶段。首先创建专用目录并拉取镜像:
mkdir -p /volume1/docker/deepseek
docker pull ghcr.io/ollama/ollama
核心在于运行容器的命令。以下示例展示了如何进行精细化控制:
docker run -d --gpus all --cpuset-cpus="0-3" --name deepseek-r1 \
-v /volume1/docker/deepseek/models:/root/.ollama/models \
-p 11434:11434 \
-e OLLAMA_HOST=0.0.0.0:11434 \
-e OLLAMA_NUMA=1 \
ollama/ollama
其中,--cpuset-cpus="0-3"将容器进程绑定至前4个CPU核心,有助于减少上下文切换,提升推理效率。-e OLLAMA_NUMA=1则启用了NUMA感知,可优化多CPU插槽系统的内存访问性能。若您的NAS未配备GPU,可移除--gpus all参数。
容器启动后,需进入其内部加载具体模型:
docker exec -it deepseek-r1 ollama run deepseek-r1:1.5b-q4_k_m
执行后将开始下载模型文件并完成初始化。使用以下命令验证服务状态:
curl http://localhost:11434/api/tags
若返回的JSON信息中包含deepseek-r1,即表明部署成功。
三、离线环境部署:Open WebUI + Llama 2一体包(无网解决方案)
对于部署在严格内网或完全隔离环境中的NAS,离线部署是唯一可行的路径。社区提供的“全家桶”镜像整合了Ollama服务、Llama 2模型及开源的Open WebUI聊天界面,实现了真正的开箱即用。
首先,在一台可访问互联网的计算机上下载离线镜像包:
wget https://github.com/open-webui/open-webui/releases/download/v0.4.4/open-webui-ollama-llama2-7b-q4k.tar.gz
下载完成后,将此压缩包上传至NAS的指定目录,例如/volume1/docker/imports/(若目录不存在请先行创建)。
随后,通过SSH登录NAS,执行镜像导入命令:
docker load -i /volume1/docker/imports/open-webui-ollama-llama2-7b-q4k.tar.gz
导入成功后,即可运行此一体化容器:
docker run -d -p 3000:8080 -p 11434:11434 \
-v /volume1/docker/ollama:/root/.ollama \
--name openwebui-llama2 \
openwebui/ollama-llama2:latest
此命令将容器的8080端口(WebUI界面)映射到主机的3000端口,同时映射Ollama的API端口11434。通过查看容器日志可确认模型加载状态:
docker logs -f openwebui-llama2 | grep "models/llama2"
当出现“model loaded”等相关提示时,表明部署已完成。最后,在浏览器中访问http://[你的NAS IP地址]:3000。一个功能完整的本地聊天界面将直接呈现,您无需配置复杂的API密钥或后端连接,即可开始与本地Llama 2模型进行交互。
在NAS上部署大模型,本质上是理解各组件功能与连接方式的过程。上述三种方法由简至繁,覆盖了主流应用场景。厘清配置逻辑,规避常见陷阱,即可让您的NAS稳定承载一个随时可用的本地智能核心。
