三年前,我的本地AI开发环境像个杂物间。Ollama后台常驻,Python虚拟环境单独给LangChain实验用,另一个终端跑着llama.cpp测试量化模型。三个不同的API格式,三个端口号,每次macOS更新至少崩掉一个。
现在这些全删了。Docker Desktop自带的Model Runner接管了一切。
![]()
这东西不需要单独安装。拉取模型和拉镜像一样:
![]()
docker model pull ai/llama3.1
docker model pull ai/phi3-mini
docker model pull ai/mistral
跑推理也一行命令:
docker model run ai/llama3.1 "Explain NUMA topology in two sentences"
或者走API端点,兼容OpenAI格式:
curl http://localhost:12434/engines/llama3.1/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages": [{"role": "user", "content": "What is OKE?"}], "max_tokens": 100}'
没有Python,没有虚拟环境,没有pip安装,不用管CUDA驱动。Mac上用Metal,其他平台走CPU,能跑就行。
![]()
我之前用Ollama几个月,确实能用,但有几处别扭。端口号11434总忘关,下次启动别的服务就冲突。Docker Model Runner跑在Docker VM里,不占主机端口,端点固定。Ollama要单独更新二进制文件,Model Runner跟着Docker Desktop一起升,少惦记一件事。
最关键是API兼容性。我生产环境用vLLM跑在OKE上,vLLM暴露的是OpenAI兼容接口。Model Runner也是OpenAI兼容格式。本地写好的客户端代码,原封不动丢到生产环境就能跑。用Ollama那会儿,我得在Ollama原生格式和OpenAI格式之间来回转。
真正改变工作流的是Docker Compose集成。现在本地开发栈里,LLM作为服务和API服务器、数据库、缓存并排跑,一个docker compose up全起来:
services:
api:
build: .
ports:
- "8080:8080"
environment:
- LLM_ENDPOINT=http://host.docker.internal:12434/engines/llama3.1/v1
depends_on:
- db
db:
image: postgres:16-alpine
API服务器往host.docker.internal:12434发请求。生产环境OKE上,同一个环境变量指向vLLM服务。代码不用改,提示词格式不用改,换后端就行。
这套流程跑顺之后,我本地那堆零散工具就再没开过。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.