初探ollama利用docker极简部署属于自己的大模型

132 阅读3分钟

前言

随着大语言模型(LLM)的普及,越来越多的开发者希望在本地或私有环境中快速构建属于自己的模型服务。本文将介绍如何利用 Ollama 这一开源工具,在 Docker 环境下快速搭建大模型服务。

本文将以 macOS 环境为例,从零开始记录部署全过程,并针对过程中遇到的网络、内存配置等常见问题提供解决方案,供大家参考。

水平有限只是分享,大家取其精华,去其糟粕

介绍Ollama

Ollama 是一个开源工具,旨在简化大语言模型在本地设备的部署和运行。它支持一键下载和运行Llama 3Qwen 等主流开源模型,无需复杂的配置。同时,它提供本地 API 服务,能方便地集成到各类应用中,保护数据隐私且零成本。

部署安装及运行

一、安装docker

# brew来安装docker
brew install --cask docker
# 检验是否docker安装并运行成功
docker ps

出现以下截图则表示docker已经成功运行在后台中

docker目录运行成功.png

二、docker下运行Ollama

# 拉取官方docker源
docker pull ollama/ollama
# 指定卷符目录运行模型(这样模型下载后下次运行不用再下载)
#   `-d`:在后台运行容器。
#   `--name my-ollama`:为你的容器指定的名称。
#   `-p 11434:11434`:将 Ollama 的默认端口映射到你的宿主机器。
#   `-v ollama:/root/.ollama`:为下载的模型创建了一个持久化卷(volume)。
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name my-ollama ollama/ollama
## 检查指定卷符下是否创建ollama容器
docker ps -a 

出现以下截图则表示创建容器成功

image.png

并且看看 localhost:11434是否已经成功监听运行成功

image.png

三、Ollama运行模型

# 按照ollama的官方文档下载gemma3模型
docker exec -it my-ollama ollama pull gemma3

image.png

好了一切都已经准备就绪了 那本地模型已经成功运行了,赶紧试试效果怎么样。

# 按照ollama的官方文档直接测试一下吧
curl http://localhost:11434/api/chat -d '{
  "model": "gemma3",
  "messages": [{
    "role": "user",
    "content": "ollama是什么有什么用"
  }],
  "stream": false
}'

image.png 基本上ollama本地部署自己的大模型就完成了,自己慢慢把玩吧

部署过程问题及解决

  • 问题: 执行docker pull报错如下context deadline exceeded
  • 解决方法:问题出在docker默认源dockerhub拉不到换源即可 image.png
// 配置换源即有效
"registry-mirrors": [
    "https://docker.registry.cyou",
    "https://docker-cf.registry.cyou",
    "https://dockercf.jsdelivr.fyi",
    "https://docker.jsdelivr.fyi",
    "https://dockertest.jsdelivr.fyi",
    "https://mirror.aliyuncs.com",
    "https://dockerproxy.com",
    "https://mirror.baidubce.com",
    "https://docker.m.daocloud.io",
    "https://docker.nju.edu.cn",
    "https://docker.mirrors.sjtug.sjtu.edu.cn",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.iscas.ac.cn",
    "https://docker.rainbond.cc",
    "https://do.nark.eu.org",
    "https://dc.j8.work",
    "https://dockerproxy.com",
    "https://gst6rzl9.mirror.aliyuncs.com",
    "https://registry.docker-cn.com",
    "http://hub-mirror.c.163.com",
    "http://mirrors.ustc.edu.cn/",
    "https://mirrors.tuna.tsinghua.edu.cn/",
    "http://mirrors.sohu.com/"
  ]
  • 问题: 执行curl http://localhost:11434/api/chat -d 报错返回内容
  • {"error":"model requires more system memory (4.8 GiB) than is available (3.8 GiB)"}
  • 解决:调整docker分配的内存大小如下图 image.png

结语

至此,我们已成功在本地部署了大模型服务,并实现了流式输出(stream)。后续只需通过后端进行简单封装,即可打造专属的 AI UI 界面。然而,受限于本地硬件算力,模型生成回答平均耗时 20-30 秒,这让我深刻体会到:在 AI 时代,算力确实是决定体验的核心生产力。