为什么用 Docker 部署 Ollama
Ollama 是一款常用的本地大模型工具,适合在个人电脑、工作站或内网服务器上运行 Llama、Qwen、Mistral 等模型。相比直接安装到系统,Docker 部署的优势是环境隔离、迁移方便、卸载干净,尤其适合需要快速验证模型能力、搭建局域网推理服务、给开发项目提供统一接口的场景。

使用 Docker 时,Ollama 本体运行在容器内,模型文件可以通过数据目录挂载保存在宿主机。这样即使删除容器,已下载的模型也不会丢失。部署时最需要关注三件事:镜像从哪里拉取、11434 服务端口如何开放、模型数据目录如何持久化。
部署前准备
开始前需要确认宿主机已安装 Docker,并且当前用户具备执行 Docker 命令的权限。Linux 服务器建议使用较新的 Docker Engine;Windows 或 macOS 可使用 Docker Desktop。硬件方面,Ollama 可以使用 CPU 运行,但大参数模型推理速度会明显受限;如果计划使用显卡,需要确认驱动、容器运行时与 Docker 的显卡支持已正确配置。
磁盘空间也要提前规划。一个 7B 量化模型通常需要数 GB 到十几 GB,多个模型会持续占用空间。建议把 Ollama 的数据目录放在容量充足、读写稳定的磁盘分区,例如 /data/ollama,而不要放在临时目录或系统盘空间紧张的位置。
拉取 Ollama 镜像
官方镜像通常可直接通过以下命令获取:docker pull ollama/ollama:latest。其中 latest 表示拉取最新版本,适合新环境部署和体验新功能。如果是生产或团队共享环境,建议固定版本标签,避免后续更新导致行为变化。可先在镜像仓库页面查看可用标签,再选择对应版本。
如果拉取速度不稳定,可以检查 Docker 的镜像源配置、DNS 解析和服务器网络环境。不要随意使用来历不明的第三方镜像,因为模型服务通常会处理提示词、业务文本或内部资料,镜像安全会直接影响数据安全。
最简一键启动命令
CPU 环境下可以使用下面的命令快速启动:docker run -d --name ollama -p 11434:11434 -v /data/ollama:/root/.ollama --restart unless-stopped ollama/ollama:latest。这条命令会在后台运行容器,将宿主机 11434 端口映射到容器 11434 端口,并把宿主机 /data/ollama 挂载为 Ollama 的模型数据目录。
参数含义需要理解清楚:-d 表示后台运行;--name ollama 指定容器名称;-p 11434:11434 用于端口映射;-v /data/ollama:/root/.ollama 用于保存模型与配置;--restart unless-stopped 表示 Docker 重启后自动拉起容器,除非手动停止。
端口映射怎么设置更安全
Ollama 默认服务端口是 11434。若只在本机使用,可以将端口绑定到本地回环地址:-p 127.0.0.1:11434:11434。这样外部设备无法直接访问,适合个人开发机使用。若需要局域网内其他机器调用,则可使用 -p 11434:11434,但要配合防火墙或访问控制,只允许可信设备连接。
不建议在公网环境中无保护地暴露 11434 端口。Ollama 原生接口更偏向本地调用场景,并不等同于完整的多用户权限系统。如果必须跨机器访问,建议放在受控内网中,或在前面增加带鉴权、限流和日志审计能力的反向袋里服务。
数据目录配置与迁移
Ollama 的模型默认保存在容器内的 /root/.ollama。如果不挂载数据目录,容器删除后模型文件也会随之消失。因此部署时必须使用 -v 参数进行持久化。Linux 示例为 -v /data/ollama:/root/.ollama,Windows Docker Desktop 可使用类似 -v D:/ollama:/root/.ollama 的写法,具体路径要确保 Docker 有访问权限。
迁移时只需停止容器,将宿主机上的数据目录复制到新机器,再用相同挂载路径启动新容器即可。为了减少故障,复制前建议执行 docker stop ollama,避免模型文件在写入过程中被拷贝。迁移完成后可运行 docker exec -it ollama ollama list 检查模型列表是否正常。
下载并运行模型
容器启动后,可以进入容器执行模型命令:docker exec -it ollama ollama run qwen2.5:7b。首次运行会自动下载模型,完成后即可在终端对话。若只想下载模型而不立即交互,可使用 docker exec -it ollama ollama pull qwen2.5:7b。
也可以通过 HTTP 接口调用服务。例如本机访问地址通常是 https://localhost:11434。开发者可将应用中的模型接口地址配置为该地址,再使用 Ollama 兼容的生成接口完成文本生成、摘要、问答或代码辅助等任务。
显卡环境部署要点
如果宿主机具备 NVIDIA 显卡,并且已安装正确驱动与 NVIDIA Container Toolkit,可在启动命令中加入 --gpus all:docker run -d --gpus all --name ollama -p 11434:11434 -v /data/ollama:/root/.ollama --restart unless-stopped ollama/ollama:latest。启动后可通过运行较大模型观察显存占用,确认是否调用显卡。
显卡相关问题通常出在驱动版本、容器运行时或 Docker Desktop 设置上。若容器能启动但推理仍走 CPU,可先检查 docker info 中是否显示相关运行时,再确认宿主机命令行工具能看到显卡状态。不同系统配置差异较大,建议先用小模型验证,稳定后再部署大模型。
升级、回滚与卸载
升级 Ollama 容器的一般流程是:先拉取新镜像,停止并删除旧容器,再使用原来的数据目录重新启动。示例步骤为:docker pull ollama/ollama:latest,docker stop ollama,docker rm ollama,最后执行原启动命令。由于模型目录挂载在宿主机,正常情况下模型不会丢失。
如果升级后出现兼容问题,可改用旧版本镜像重新创建容器。生产环境不建议直接使用 latest 长期运行,最好记录当前镜像标签、启动参数和数据目录位置。卸载时若只删除容器,使用 docker rm 即可;若要彻底清理模型数据,还需要手动删除宿主机挂载目录,但操作前务必确认没有重要模型或配置。
常见问题排查
问题一:访问 localhost:11434 没有响应。先执行 docker ps 检查容器是否运行,再执行 docker logs ollama 查看日志。如果容器未启动,通常是端口被占用、目录权限不足或 Docker 服务异常。
问题二:提示端口已被占用。说明宿主机 11434 已被其他进程使用,可以停止占用进程,或改成 -p 11435:11434,此时外部访问地址应改为宿主机的 11435 端口。
问题三:模型下载后重启丢失。通常是没有正确挂载 /root/.ollama,或挂载到了错误路径。检查启动命令中的 -v 参数,并确认宿主机目录中确实存在 models 等文件夹。
问题四:推理速度慢。先确认模型参数规模是否适合当前硬件,再检查是否启用了显卡。CPU 环境建议选择较小参数或量化版本模型,避免一次加载超出内存承载能力。
安全边界与实用建议
本地大模型并不意味着绝对安全。提示词、上传文本和生成结果都可能包含敏感内容,部署者需要明确哪些数据可以进入模型服务。团队环境中应限制访问范围,避免任何人都能直接调用接口造成资源耗尽或数据泄露。
建议将启动命令保存为脚本或 docker compose 配置,便于复现和维护;为模型目录设置定期备份;为不同用途建立独立目录,避免测试模型和正式服务混用。若机器资源有限,不要同时拉取过多大模型,优先根据业务场景选择合适的模型规模。掌握镜像、端口与数据目录三项核心配置后,Ollama 的 Docker 部署就能做到快速上线、方便迁移、稳定维护。
