很多人第一次用 Docker 跑 Ollama,卡的不是命令本身,而是镜像拉不动、模型存哪、容器里看不到显卡、宿主机连不上端口。这篇按「装之前先想清楚什么、起容器要固定哪几个参数、跑起来怎么验证、坏了按什么顺序查」四步走一遍,让你在一台机器上把整套东西跑通并能给同事复用。
很多人第一次用 Docker 跑 Ollama,卡住的不是那条 docker run 命令本身,而是镜像拉不动、模型存哪、容器里看不到显卡、宿主机连不上端口这几件事。命令抄对了,环境没对上,照样起不来。
这篇按「装之前先想清楚什么、起容器要固定哪几个参数、跑起来怎么验证、坏了按什么顺序查」走一遍,目标是一台机器上跑通,并且这套配置能直接给同事复用。下面所有涉及具体档位和资源量的数字,都建议到站内对应页面按你手上的卡现算,别照抄别人的。
动手前先确认三件事
别急着敲命令。这三件事没想清楚,后面每一步都会返工。容器只是把宿主机的显卡能力透传进去,宿主机驱动不对,容器里再折腾也是白搭。磁盘位置和访问范围同理,都是先在脑子里定下来,再动手。
- 确认宿主机有没有可用的 GPU 和驱动,容器本身不装驱动;没有独显就走纯 CPU 方案,别指望速度,先接受这个前提再谈调优
- 确认模型放哪个目录,模型文件动辄好几个 G,默认落在系统盘容易把根分区撑满,先决定挂载点,再决定要不要单独加块盘
- 确认这套东西给谁用,自己单机试就绑本地回环,要给同事或内网其他机器访问就得提前想好端口和绑定地址,这两种配置方式不一样
起容器要固定下来的几个参数
起容器这一步,重点是「哪些参数必须显式写死」,而不是记命令。下面四个参数每次都要想一遍:数据卷、端口映射、显卡透传、重启策略。它们决定了这套东西能不能备份、能不能给外部用、能不能在宿主机重启后自己活过来。
| 参数类别 | 为什么必须固定下来 | 不固定的后果 |
|---|---|---|
| 数据卷挂载 | 模型、配置都在容器里,挂出来才有备份和迁移的基础 | 删容器等于全丢,重新拉一遍模型 |
| 端口映射 | 容器内和宿主机是两套端口,改完一头容易忘另一头 | 接口在容器里通、宿主机连不上 |
| 显卡透传 | 只挂数据卷不挂设备,容器里看到的还是 CPU | 以为在用卡,实际全程 CPU 算 |
| 重启策略 | 长期跑的机器要随宿主机自启 | 机器重启一次服务就没了 |
# 示意结构,具体参数按你的环境替换;数据卷与设备路径别照抄
docker run -d --name ollama \\
--restart unless-stopped \\
-p 127.0.0.1:11434:11434 \\
-v /your/models:/root/.ollama \\
ollama/ollama上面这段只是结构示意,重点是让你看清四个位置各自干什么。端口先绑回环,确认能跑通再考虑放开;数据卷一定要指到一个容量够、你找得到的目录,这是后面所有备份和迁移动作的前提。
怎么确认真的跑起来了
容器起来不等于可用。验证要分四层走:容器状态、启动日志、两个位置的接口请求、一次真实推理。顺序别跳,跳了就容易把网络问题和模型问题混成一起查。
- 先看状态和日志确认容器在跑,然后看启动日志的前几十行。启动报错基本都在那里面,别急着发请求。
- 容器内外各请求一次在容器内和宿主机上分别请求同一个接口。两边表现不一致,问题基本出在端口映射或绑定地址,而不是服务本身。
- 发一个小对话请求观察首次响应时间。第一次加载慢是正常的,之后还慢,基本就是显存没吃上,或者在用 CPU 算。
- 记下基线持续观察显存占用和输出速度,把这两个数记下来。后面换模型或调参数时,才有东西可对照。
起不来时的排查顺序
排查最怕没有顺序,一会儿怀疑模型、一会儿怀疑网络,时间全浪费在来回试上。按下面四步从外往里收:容器活没活、显卡有没有透传、网络与端口通不通、最后才查模型本身是否下载完整。
- 第一步查容器是否存活、日志有没有明确报错,不要一上来就怀疑模型
- 第二步查显卡有没有透传进容器,这是「看起来在跑其实很慢」的常见原因
- 第三步查网络与端口,容器内外分别试,定位是映射还是绑定地址的问题
- 第四步才查模型是否下载完整,拉模型慢或失败多半是网络出口问题,换镜像源或先在能联网的机器上拉好再搬进来
- 显存不够跑一半崩,先换更小的量化档位或更小参数量,具体怎么选到 /models/deploy 按你的卡和模型算一遍
长期跑要顺手做掉的几件事
跑通只是起点。长期跑要考虑的是「换台机器还能不能照着做出来」和「出问题时能不能退回去」,这两件事靠的是配置留存和版本管理,不是靠记忆。
| 要做的事 | 判断标准 | 什么时候不适用 |
|---|---|---|
| 配置留存 | 模型目录、启动参数写成一份可复制的文件 | 只是临时试一次,用完就删,可以跳过 |
| 容量与版本管理 | 说得清哪个容器配哪份数据卷,能回退 | 单机自用、模型固定不变时优先级低 |
| 访问与安全 | 接口开放范围明确,有访问控制 | 永远只绑本地回环,不对外,可以后置 |
| 工具选型 | 按单机自用还是多人并发来定 | 规模没上去前不必提前上编排 |
最后一条值得单独说:单机自用和多人并发的选型标准不一样。规模上去之后,容器编排和推理框架的选择都得重新看,别拿单机方案硬扛并发,具体对比可以到站内工具目录看当时的收录情况。
下一步本地跑通后,把部署参数和你的卡型对应起来看一遍,再到站内工具目录对照同类方案的取舍,避免选型踩坑。→常见问题
用 Docker 跑 Ollama 和不套 Docker 直接装,到底差在哪?
Docker 的好处是环境一起打包,换机器、重装、交给同事复制都省事,数据卷一挂模型也不丢。代价是多一层,显卡透传和网络映射这两块比裸装更容易出问题,排查时多一层要对照。就一台机器自己用、又不想折腾容器,直接装更省心。
容器里跑出来很慢,是哪里没配对吗?
先分清是首次加载慢还是持续慢。首次加载慢属正常,之后每次回复都慢,八成是没吃到显卡,回去检查显卡透传和驱动;排除了再看量化档位和模型规模是不是超出这张卡的能力,具体数值到 /models/deploy 按你的卡算一遍比在群里问靠谱。
模型文件存在哪,重装会不会全没了?
默认在容器内部的路径,容器一删就没了,这是最常见的坑。正确做法是把模型目录通过数据卷挂到宿主机上,重装容器时指向同一个目录就能直接复用。换机器时把这个目录整体拷过去就行,不用重新下载。