平时做技术实践时,很多问题不是概念不会,而是细节没串起来。拿“Docker部署Ollama搭建本地AI开发环境”来说,它看着像小点,放到项目里常会牵出环境、配置、兼容性和维护成本。下面按实际采用顺序,把思路、关键写法和容易踩坑的地方讲清楚,便于大家直接对照操作。
落到代码里,“想开发 AI 应用,每次都要调用云端 API?免费额度用完还得付费?跑个 demo 都要担心成本?”
落到代码里,这是很多 AI 应用开发者遇到的痛点。阿里百炼、智谱 AI、OpenAI 等平台虽然提供免费额度,但用完就得付费。而且在开发调试阶段,频繁调用 API 不仅费钱,网络延迟也影响体验。
更好的方案是:本地部署大模型,开发测试随便用,无需担心额度和费用。
在这个场景下,今天这篇文章,我会带你用 Docker + Ollama 搭建一个本地 AI 开发环境,让你在开发 AI 应用时,能够更快调用本地模型进行测试。
Ollama 实际处理时,是一个开源的本地大模型运行工具,让你能够像采用 Docker 管理容器一样,轻松管理和运行各种开源大模型。

docker pull,用 ollama pull qwen2.5:7b 即可下载模型| 场景 | 建议方案 | 原因 |
|---|---|---|
| 开发测试 | Ollama | 部署轻松、API 兼容、更快迭代 |
| 个人/小团队 | Ollama | 资源占用低、开箱即用 |
| 生产环境 | vLLM / 云端 API | 高并发、高吞吐、稳定可靠 |
| 企业私有化 | vLLM + K8s | 可扩展、可坚控、高可用 |
总结:Ollama 的定位是本地开发测试工具在这个场景下,,而不是生产级推理引擎。如果你需支撑高同时发线上服务,应该考虑 vLLM 等专业方案。
| 工具 | 特点 | 适用场景 |
|---|---|---|
| Ollama | 上手最轻松,类 Docker 体验 | 开发测试、个人采用 |
| vLLM | 高性能推理引擎,兼容 PagedAttention | 生产环境、高并发 |
| LM Studio | 图形界面,适合非技术用户 | 个人体验、无代码场景 |
| LocalAI | OpenAI API 完全兼容,功能丰富 | 需完整 OpenAI 替代方案 |
| llama.cpp | 底层推理库,性能极致 | 需深度定制、嵌入式场景 |
为什么开发阶段选 Ollama?
先看下两种方案的对比:
| 对比项 | 云端 API(百炼/OpenAI) | 本地 Ollama |
|---|---|---|
| 调用方式 | HTTP API | HTTP API(兼容 OpenAI 格式) |
| 费用 | 免费额度用完需付费 | 完全免费 |
| 网络 | 依赖网络,有延迟 | 本地调用,毫秒级响应 |
| 隐私 | 数据上传云端 | 数据完全本地 |
| 模型选择 | 平台限定 | 自由选择任意模型 |
| 适用场景 | 生产环境 | 开发测试、跑 Demo |
核心价值:本地 Ollama 提供 OpenAI 兼容的 API 接口,你的代码几乎不用改,只需换一下 base_url,就能无缝切换。
访问 Docker 官网下载安装包:
(链接已移除)
落到代码里,根据你的操作系统选择对应版本(Windows / macOS / Linux 都兼容)。
打开终端,执行:
docker --version
docker run hello-world
看到 “Hello from Docker!” 说明安装成功。

macOS 用户:
mkdir -p /Users/$(whoami)/docker/ollama
Linux 用户:
sudo mkdir -p /home/docker/ollama
sudo chmod 777 /home/docker/ollama
说明:macOS 的用户目录是
/Users/用户名,而 Linux 是/home/用户名。macOS 的/home是受保护的系统目录,无法写入。
macOS 用户:
docker run -d
--name ollama
-p 11434:11434
-v /Users/$(whoami)/docker/ollama:/root/.ollama
ollama/ollama
Linux 用户:
docker run -d
--name ollama
-p 11434:11434
-v /home/docker/ollama:/root/.ollama
ollama/ollama
参数说明:
-p 11434:11434:暴露 API 端口,供本地应用调用-v <宿主机目录>:/root/.ollama:挂载宿主机目录,模型数据持久化保存curl http://localhost:11434
得到 Ollama is running 即成功。
进入容器:
docker exec -it ollama bash
开发测试建议轻量级模型(响应快,资源占用低):
# 中文场景推荐
ollama pull qwen2.5:7b # 通义千问,中文能力强
ollama pull qwen2.5:1.5b # 更轻量,快速测试用
# 推理场景推荐
ollama pull deepseek-r1:7b # DeepSeek R1,推理能力强
ollama pull deepseek-r1:1.5b # 轻量版
# 英文场景推荐
ollama pull llama3.2:3b # Llama 3.2,平衡性能和速度
ollama pull llama3.1:8b # 经典版本
ollama list # 查看已下载模型
ollama ps # 查看运行中的模型
ollama rm <模型名> # 删除模型
Ollama 提供 OpenAI 兼容的 API,这意味着你能够直接复用现有代码,只需修改 base_url。
Base URL: http://localhost:11434/v1
API Key: ollama(随便填,本地不需要验证)
from openai import OpenAI
client = OpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama" # 本地部署,随便填
)
response = [email protected](
model="qwen2.5:1.5b",
messages=[
{"role": "user", "content": "你好,介绍一下你自己"}
]
)
print(response.choices[0].message.content)
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'http://localhost:11434/v1',
apiKey: 'ollama'
});
const response = await [email protected]({
model: 'qwen2.5:1.5b',
messages: [
{ role: 'user', content: '你好,介绍一下你自己' }
]
});
console.log(response.choices[0].message.content);
curl http://localhost:11434/v1/ch@t/completions
-H "Content-Type: application/json"
-d '{
"model": "qwen2.5:1.5b",
"messages": [{"role": "user", "content": "你好"}]
}'

落到代码里,若你是 Java 开发者,Spring AI 对 Ollama 有原生兼容,借助 OllamaChatModel 能够直接注入采用。
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-ollama</artifactId>
<version>1.1.0</version>
</dependency>
踩坑提醒:网上很多教程建议采用 spring-ai-ollama-spring-boot-starter,但它的最新版是 1.0.0-M6。如果你的项目中 Spring AI 版本较新(如 1.1.0),直接引入会导致启动报错。
原因:Spring AI 新版本将 spring-ai-spring-boot-autoconfigure 拆分成了多个模块,而旧的 starter 依赖的自动设置类与新版本存在 Bean 冲突。
解决方案:采用新版单独的自动设置模块:
<dependency>
<groupId>org.springframework.ai</groupId>
<artifactId>spring-ai-autoconfigure-model-ollama</artifactId>
<version>1.1.0</version>
</dependency>
spring:
ai:
ollama:
base-url: http://localhost:11434
ch@t:
model: deepseek-r1:7b
设置完成后,能够直接注入 ollamaChatModel:
@Autowired
@Qualifier("ollamaChatModel")
private ChatModel ollamaChatModel;
@RestController
@RequestMapping("/ai/ollama")
public class OllamaChatController {
@Autowired
@Qualifier("ollamaChatModel")
private ChatModel ollamaChatModel;
@GetMapping("/stream/ch@t")
public Flux<String> streamChat(HttpServletResponse response) {
response.setCharacterEncoding("UTF-8");
Flux<ChatResponse> stream = ollamaChatModel.stream(new Prompt("你是谁?"));
return stream.map(resp -> resp.getResult().getOutput().getText());
}
}
落到代码里,启动应用后,访问这个接口,就能调用到本地部署的 DeepSeek 模型了。

建议的开发流程:
1. 本地开发 → 调用 Ollama(localhost:11434)
2. 本地测试 → 继续用 Ollama,更快迭代
3. 部署上线 → 切换到云端 API(阿里百炼/智谱/OpenAI)
切换只需改设置:
# 开发环境
spring.ai.ollama.base-url: http://localhost:11434
# 生产环境
spring.ai.openai.base-url: https://dashscope.aliyuncs.com/compatible-mode/v1
spring.ai.openai.api-key: ${DASHSCOPE_API_KEY}
选择更小的模型参数,如 qwen2.5:1.5b 或 deepseek-r1:1.5b,响应速度会快很多。
理解这一步时,8GB 内存建议用 7B 以下的模型,16GB 能够尝试 14B 模型。
curl http://localhost:11434/v1/models
得到模型列表即正常。
落到代码里,是的,模型存储在挂载的宿主机目录中(macOS: /Users/用户名/docker/ollama,Linux: /home/docker/ollama),容器重启或重建都不会丢失。
搭建本地 AI 开发环境,核心就三步:
核心价值:
参考资料:
实际处理时,总的来说,Docker适合结合实际项目边做边理解。先抓住核心思路,再逐步补上细节和边界处理,最后效果会更稳定,也更容易复用。