Docker 与 Ollama:在本地运行 LLM 的终极指南,兼顾隐私与零成本

本文将向你展示如何使用 Docker 和 Ollama 快速搭建一个本地、私有且免费的大语言模型服务。你将学会如何配置环境、拉取模型(如 Llama, Mistral),并通过 API 进行交互,彻底摆脱对第三方服务的依赖。

阅读时长: 6 分钟
共 2573字
作者: eimoon.com

很多开发者都想尝试在本地跑大模型,但常常不知道从哪儿下手。

随着 Llama、Mistral 这类开源模型的崛起,本地 AI 变得前所未有的触手可及。你不用再花一分钱给 OpenAI 或 Anthropic,也不用担心把公司或个人的敏感数据发送到第三方服务器。但挑战在于,大多数的安装指南都涉及到折腾 Python 环境、CUDA 驱动和各种依赖库,这些东西换台机器就可能出问题。

Ollama 的出现就是为了解决这个问题,它提供了一种极简的方式来本地化运行 LLM。而当 Ollama 与 Docker 结合时,你就拥有了一个干净、可移植、在任何系统上都能一致运行的终极解决方案。

在这篇文章里,我会带你一步步在 Docker 中设置好 Ollama,拉取你的第一个模型,并开始运行一个可以被任何应用程序调用的本地大模型服务。

Ollama 是什么?

你可以把 Ollama 理解为在自己电脑上运行大模型最简单的方式。

它是一个轻量级的程序,包揽了所有本地运行 LLM 的脏活累活。你不需要手动管理 Python 环境、安装 CUDA 驱动,也不用去搞清楚模型权重、分词器这些复杂的东西。Ollama 帮你处理好模型的下载、加载和启动服务,比如用一条命令就能跑起来 LLaMA、Mistral 或者 Gemma。

隐私是内置的。你和模型的对话永远不会离开你的电脑。没有 API 密钥,没有用量追踪,没有数据被发送到外部服务器。这让它非常适合处理那些不能冒任何风险的敏感工作,比如公司的专有代码或个人信息。

Ollama 从设计之初就是为开发者服务的。它原生支持 macOS 和 Linux,提供一个简单的 REST API 用于集成,现在还能在 Docker 容器里运行。这意味着你在本地开发时用的那套环境,可以原封不动地部署到任何支持 Docker 的地方。

为什么非要用 Docker 来跑 Ollama?

答案很简单:你能享受到 Ollama 的所有好处,同时保持你的系统干净整洁。

直接在你的机器上安装 Ollama 当然也行,官方提供了打包好的安装程序(Windows 的 .exe,Mac 的 .dmg)。但 Docker 提供了一个关键优势:隔离

  • 隔离性与纯净度:有了 Docker,Ollama 和它下载的所有模型都运行在自己的容器里。这让你的主系统保持干净,没有任何安装残留。测试完了想清理?一条命令就能彻底删除,不留痕迹。
  • 一致性与可复现性:分享一条 Docker 命令,团队里的任何人都能启动一个一模一样的 Ollama 环境,不管他们用的是 macOS、Linux 还是 Windows。再也没有“在我电脑上是好的”这种扯皮了。
  • 部署简单:在你笔记本上运行的容器,同样可以无缝地在云服务器、CI/CD 流水线或者同事的机器上运行,不需要任何修改。

简单来说,用 Docker 跑 Ollama,你获得了本地 LLM 的所有能力,却没有了环境配置的烦恼。

三步搭建你的本地 LLM 服务

你只需要三条命令,就能在 Docker 里跑起 Ollama。

首先,从 Docker Hub 拉取官方的 Ollama 镜像:

docker pull ollama/ollama

接着,运行容器,并做好端口和数据卷的映射:

docker run -d --name my-ollama-docker -p 11434:11434 -v ollama:/root/.ollama ollama/ollama

解释一下每个参数的作用:

  • -d:让容器在后台(detached mode)运行。
  • --name my-ollama-docker:给你的容器起一个好记的名字。
  • -p 11434:11434:把容器内的 11434 端口映射到你电脑的 11434 端口,这样你才能访问到 Ollama 服务。
  • -v ollama:/root/.ollama:这是最关键的一步。它创建了一个具名卷(named volume),为你的模型数据提供了一个持久化的卷宗。没有它,容器一停,下载的模型就全没了。

容器会立刻启动,并开始在 http://localhost:11434 监听请求。

现在,我们来下载一个模型测试一下:

docker exec -it my-ollama-docker ollama pull llama3.1

这条命令会进入正在运行的容器,并执行 ollama pull llama3.1,下载 Llama 3.1 8B 模型。这个模型大概 5GB,可能需要几分钟。

下载完成后,你可以验证一下:

docker exec -it my-ollama-docker ollama list

你应该能看到刚刚下载的 llama3.1 模型信息。

与你的本地 LLM 交互

容器跑起来后,Ollama 就变成了一个标准的 REST API 服务。你可以用任何能发送 HTTP 请求的工具和它交互。

使用 curl

curl 做个快速测试:

curl http://localhost:11434/api/generate -d '{
  "model": "llama3.1",
  "prompt": "Why is the sky blue?",
  "stream": false
}'

API 会返回一个包含生成文本的 JSON 响应。把 stream 设置为 false 可以一次性拿到完整结果,设置为 true 则会以流式的方式逐个返回 token。

使用 Python

在 Python 里调用也同样简单:

import requests

response = requests.post(
    "http://localhost:11434/api/generate",
    json={
        "model": "llama3.1",
        "prompt": "用一句话解释什么是 Docker 容器。",
        "stream": False,
    },
)

print(response.json()["response"])

这让 Ollama 非常适合作为本地应用的后端。你可以构建聊天界面、代码补全工具或者文档分析系统,让它们与容器化的 LLM 对话,而无需将数据发送到外部。

集成 LangChain

对于更复杂的工作流,与 LangChain 的集成也是开箱即用的:

from langchain_ollama import ChatOllama

llm = ChatOllama(model="llama3.1", base_url="http://localhost:11434")
response = llm.invoke("用两句话解释容器化的好处。")
print(response)

性能考量:硬件才是硬道理

本地跑 LLM 对硬件有要求,这点必须清楚。

  • CPU vs GPU:差距巨大。Ollama 可以在纯 CPU 的机器上运行,但推理速度会很慢,一个简单的回复可能要等 30 秒以上。如果有一块现代 GPU,同样的查询可能 5 秒内就完成了。NVIDIA 的 GPU 效果最好,但 Apple Silicon 的 Mac 表现也很不错。
  • 内存(RAM):这是最主要的瓶颈。模型大小和内存需求直接挂钩。像 Llama 3.1 8B 这样的小模型至少需要 8GB 内存,而 70B 的大模型则需要 64GB 甚至更多。
  • 硬盘空间:模型文件很大,每个模型都会占用几个 GB 的空间。7B 模型大约 4-8GB,13B 的 8-16GB,70B 的则需要 40-80GB。

总的来说,瓶颈通常是内存,而不是 CPU 或硬盘速度。

小贴士与踩坑指南

在 Docker 里用 Ollama 时,有几个小地方需要注意。

  • GPU 支持:官方的 Ollama 镜像支持 NVIDIA GPU,但你需要先安装 NVIDIA Container Toolkit,然后在运行容器时加上 --gpus all 参数:

    docker run -d --gpus all --name my-ollama-gpu -p 11434:11434 -v ollama:/root/.ollama ollama/ollama
    

    没有这个参数,Ollama 会回退到纯 CPU 模式,虽然能用,但跑的很慢。

  • 数据卷的坑:再强调一次,一定要用 -v ollama:/root/.ollama 这样的具名卷。如果你直接挂载主机目录,可能会因为文件权限问题导致 Ollama 无法写入模型文件。如果你次启动容器时忘记加 -v 参数,所有模型都得重新下载。

  • 常见问题排查

    • 容器启动失败?检查 11434 端口是否被其他程序占用了。
    • 模型下载慢?检查你的网络连接。
    • API 请求超时?如果跑的是大模型,尝试在 Docker Desktop 的设置里增加分配给容器的内存。

结语

Ollama 和 Docker 的组合,极大地降低了本地 AI 开发的门槛。

你得到了设计层面的隐私保护,可预测的零成本,以及对 AI 技术栈的完全控制,不受任何供应商或网络状况的限制。

整个搭建过程不过几分钟。拉取镜像,运行容器,下载模型,然后你就可以开始创造了。无论你是想做一个 AI 助手原型,还是搭建一个私有的 RAG 系统,这套组合拳都能让你在自己的笔记本上拥有企业级的 AI 能力。

现在,问题是,你准备用它来构建什么呢?

关于

关注我获取更多资讯

公众号
📢 公众号
个人号
💬 个人号
使用 Hugo 构建
主题 StackJimmy 设计