1. 为什么我最终选择Docker化部署Ollama
先说结论:如果你的主力机器是Windows,又时不时在Linux服务器之间切换,或者总想把模型、配置、Web界面一次性打包带走,那用Docker部署Ollama几乎是唯一省心的方式。
我第一次接触Ollama是直接在Windows上装的原生安装包。当时觉得没什么问题,双击安装,命令行里ollama run qwen2.5就能跑起来,模型文件默认丢到C:\Users\用户名\.ollama\models。但用着用着就开始难受了:C盘空间告急,想给模型换个磁盘目录得去改环境变量,换一台电脑就得重新走一遍安装流程。最要命的是,一旦我想在网页端管理模型或者接入其他工具,就要在一台机器上同时装好几个服务,环境乱成一锅粥。
后来我把Ollama塞进了Docker容器,这些问题基本都消失了。Docker化的核心价值不是“看起来更高级”,而是把Ollama运行时、模型文件、依赖环境全部隔离在容器里,宿主机器上不留任何残余文件。升级Ollama版本只需要重新拉一个镜像标签,回滚也只是一条命令的事。模型文件通过挂载目录放在任意磁盘位置,目录结构一目了然,再也不用满C盘找文件。
最关键的是,Docker版本在Windows、macOS、Linux上的行为完全一致。我在Windows上用Docker Desktop跑通的容器配置,原封不动搬到Ubuntu服务器上直接可用,没有任何“换个系统就报错”的适配成本。这篇文章就按我实际操作的流程,把从零部署到模型管理、Web界面编排的完整过程写清楚,包括所有踩过的坑和解决办法。
适合看这篇的读者主要有三类:一是本地磁盘吃紧、想把模型放到其他盘的人;二是搞不定Ollama下载速度、需要换国内镜像源的人;三是想在Docker里把Ollama和其他服务(比如Open WebUI)一键编排起来的人。下面直接进入部署实操。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 部署前置准备:Docker环境与镜像加速一次配到位
2.1 Docker Desktop安装时的几个关键勾选
Docker版的Ollama本身不挑Docker实现,关键是你的Docker环境是不是能正常用。Windows平台最主流的做法是安装Docker Desktop,但很多人卡在第一步:安装包下载慢、装完启动不了。
Docker Desktop的安装过程本身没有太多门槛,无非是下一步下一步。我提醒三个容易被忽略的点:
- 安装时勾选“Use WSL 2 instead of Hyper-V”。WSL 2的内存管理更好,启动速度也比Hyper-V快,Ollama这类需要吃内存的应用跑在WSL 2后端更稳。
- 安装完成后,在Settings -> General里确认“Use the WSL 2 based engine”处于打开状态。有些机器默认用的是Windows容器模式,会导致拉取Linux镜像时报“no matching manifest”。
- 如果安装包下载很慢,去官网找国内CDN镜像地址或者用离线安装包。这个问题网上讨论很多,不再展开,但离线包确实能省不少时间。
装完后打开一个终端,执行:
bash复制docker version
能同时看到Client和Server版本信息,就说明Docker引擎已经正常启动了。如果只看到Client,说明Docker Desktop的后台服务没起来,去把Docker Desktop重新启动一下。
2.2 国内镜像加速源配置:解决Docker镜像下载慢
Docker部署Ollama绕不开的一个问题是:从Docker Hub拉镜像的网速可能很慢。尤其是ollama/ollama这个镜像,体积虽然不算大(几百MB级别),但默认从Docker Hub拉取时经常出现连接超时或者进度条半天不动。
解决办法是配置镜像加速器。Docker Desktop的用户可以在Settings -> Docker Engine里修改json配置,加入国内镜像源地址。我自己用的配置大致是这个结构:
json复制{
"registry-mirrors": [
"https://docker.1ms.run",
"https://docker.xuanyuan.me"
]
}
改完点“Apply & Restart”,Docker引擎会带着新配置重启。之后拉取镜像会走加速源,速度提升非常明显。
注意:镜像加速源只对Docker Hub的镜像生效,不影响Ollama模型文件的下载。模型下载慢的问题在第4部分单独讲。
2.3 给Docker分配足够的内存和CPU资源
Ollama跑大模型非常吃内存和CPU,尤其是现在主流的7B、14B模型,量化后也要5-8GB内存。Docker Desktop默认给WSL 2分配的内存可能只有2GB左右,如果不调大,容器启动后模型加载到一半就可能被系统杀掉。
打开Docker Desktop的Settings -> Resources,把内存调到至少8GB,CPU留4核以上。我自己的机器是32GB内存,Docker分配了16GB,跑14B量化模型很从容。
如果你的模型超过20GB,建议把Swap也调大一点,防止内存峰值时容器被强制重启。
这步看着不起眼,但很关键。很多人容器起来了,ollama run命令也能执行,就是模型一加载就报“Killed”,十有
