docker+ollama部署大模型

模型与算力

讲清用 Docker 拉起 Ollama 跑本地大模型的完整链路:镜像与挂载、显存分配、端口与内网访问、模型落盘位置和常见起不来的排查顺序。

很多人第一次用 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

上面这段只是结构示意,重点是让你看清四个位置各自干什么。端口先绑回环,确认能跑通再考虑放开;数据卷一定要指到一个容量够、你找得到的目录,这是后面所有备份和迁移动作的前提。

怎么确认真的跑起来了

容器起来不等于可用。验证要分四层走:容器状态、启动日志、两个位置的接口请求、一次真实推理。顺序别跳,跳了就容易把网络问题和模型问题混成一起查。

  1. 先看状态和日志确认容器在跑,然后看启动日志的前几十行。启动报错基本都在那里面,别急着发请求。
  2. 容器内外各请求一次在容器内和宿主机上分别请求同一个接口。两边表现不一致,问题基本出在端口映射或绑定地址,而不是服务本身。
  3. 发一个小对话请求观察首次响应时间。第一次加载慢是正常的,之后还慢,基本就是显存没吃上,或者在用 CPU 算。
  4. 记下基线持续观察显存占用和输出速度,把这两个数记下来。后面换模型或调参数时,才有东西可对照。

起不来时的排查顺序

排查最怕没有顺序,一会儿怀疑模型、一会儿怀疑网络,时间全浪费在来回试上。按下面四步从外往里收:容器活没活、显卡有没有透传、网络与端口通不通、最后才查模型本身是否下载完整。

  • 第一步查容器是否存活、日志有没有明确报错,不要一上来就怀疑模型
  • 第二步查显卡有没有透传进容器,这是「看起来在跑其实很慢」的常见原因
  • 第三步查网络与端口,容器内外分别试,定位是映射还是绑定地址的问题
  • 第四步才查模型是否下载完整,拉模型慢或失败多半是网络出口问题,换镜像源或先在能联网的机器上拉好再搬进来
  • 显存不够跑一半崩,先换更小的量化档位或更小参数量,具体怎么选到 /models/deploy 按你的卡和模型算一遍

长期跑要顺手做掉的几件事

跑通只是起点。长期跑要考虑的是「换台机器还能不能照着做出来」和「出问题时能不能退回去」,这两件事靠的是配置留存和版本管理,不是靠记忆。

要做的事判断标准什么时候不适用
配置留存模型目录、启动参数写成一份可复制的文件只是临时试一次,用完就删,可以跳过
容量与版本管理说得清哪个容器配哪份数据卷,能回退单机自用、模型固定不变时优先级低
访问与安全接口开放范围明确,有访问控制永远只绑本地回环,不对外,可以后置
工具选型按单机自用还是多人并发来定规模没上去前不必提前上编排

最后一条值得单独说:单机自用和多人并发的选型标准不一样。规模上去之后,容器编排和推理框架的选择都得重新看,别拿单机方案硬扛并发,具体对比可以到站内工具目录看当时的收录情况。

下一步本地跑通后,把部署参数和你的卡型对应起来看一遍,再到站内工具目录对照同类方案的取舍,避免选型踩坑。

常见问题

用 Docker 跑 Ollama 和不套 Docker 直接装,到底差在哪?

Docker 的好处是环境一起打包,换机器、重装、交给同事复制都省事,数据卷一挂模型也不丢。代价是多一层,显卡透传和网络映射这两块比裸装更容易出问题,排查时多一层要对照。就一台机器自己用、又不想折腾容器,直接装更省心。

容器里跑出来很慢,是哪里没配对吗?

先分清是首次加载慢还是持续慢。首次加载慢属正常,之后每次回复都慢,八成是没吃到显卡,回去检查显卡透传和驱动;排除了再看量化档位和模型规模是不是超出这张卡的能力,具体数值到 /models/deploy 按你的卡算一遍比在群里问靠谱。

模型文件存在哪,重装会不会全没了?

默认在容器内部的路径,容器一删就没了,这是最常见的坑。正确做法是把模型目录通过数据卷挂到宿主机上,重装容器时指向同一个目录就能直接复用。换机器时把这个目录整体拷过去就行,不用重新下载。

本文依据各平台公开文档与官方公告整理,只做中文归纳;具体做法、参数与限制以官方文档为准。