官方docker安装:Docker – Ollama
参考文档:使用 Docker Compose 实现灵活部署与管理 Ollama Ollama 作为一款流行的本地大语言模型运行框架 – 掘金
docker run -d -v ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollama
安装OIIama
Nvidia GPU
安装 NVIDIA容器工具包
第一步:创建配置与数据目录
首先,在用户主目录下创建一个专门用于存放 Ollama 相关文件的目录:
接下来,在此目录中创建两个核心文件:docker-compose.yml 和 update-ollama.sh (更新容器的脚本)。
services:
ollama:
# 使用官方最新镜像
image: ollama/ollama:latest
# 定义容器名称,方便管理
container_name: ollama
# 设置重启策略:除非手动停止,否则容器将在退出后自动重启
restart: unless-stopped
environment:
# 配置允许访问 Ollama API 的来源地址。'*' 表示允许所有来源。
# 注意:安全性自己保障,我这里是为了LobeChat 使用方便
- OLLAMA_ORIGINS=*
ports:
# 将宿主机的 11434 端口映射到容器内的 11434 端口
- "11434:11434"
volumes:
# 将宿主机的 ~/.ollama/data 目录挂载到容器内的 /root/.ollama 目录
# 这是 Ollama 存储模型文件和元数据的地方,实现数据的持久化存储。
- ./ollama/data:/root/.ollama
deploy:
# --- 资源部署配置段 ---
resources:
reservations:
# GPU 资源预留配置 (仅当需要并配置了 NVIDIA GPU 时启用)
devices:
# 指定使用 nvidia 驱动
- driver: nvidia
# 使用所有检测到的 NVIDIA GPU
count: all
# 请求 GPU 相关能力
capabilities: [gpu]
# --- GPU 配置段结束 ---
配置解读:
image: 指定使用官方ollama/ollama:latest镜像。container_name: 将容器命名为ollama,便于后续通过名称进行操作。restart: unless-stopped: 确保容器具有较好的自恢复能力。environment:OLLAMA_ORIGINS=*设置允许所有来源访问 API,便于本地开发和测试。ports: 将宿主机的11434端口暴露出来,映射到容器的同名端口,使得可以通过http://<宿主机IP>:11434访问 Ollama API。volumes: 这是实现数据持久化和便捷迁移的关键。将宿主机的~/.ollama/data目录映射到容器内 Ollama 的工作目录。所有下载的模型和相关数据都将保存在宿主机上,即使容器被删除重建,数据依然保留。迁移时只需复制~/.ollama目录。deploy.resources.reservations.devices: 特别说明:此部分用于配置 NVIDIA GPU 加速。如果你使用的是 Apple Silicon (M系列芯片) 的 Mac,Docker Desktop for Mac 通常会自动利用 Metal 实现 GPU 加速,一般不需要此deploy配置,可以将其整个移除。对于其他平台,如果你没有 NVIDIA GPU 或不打算使用 GPU 加速,也应移除此deploy部分。若要启用 NVIDIA GPU 支持,请确保已正确安装 NVIDIA Container Toolkit 并配置 Docker。
第三步:创建 update-ollama.sh 更新脚本
为了方便地将 Ollama 更新到最新版本,我们创建一个更新脚本 update-ollama.sh:
#!/bin/bash
# 自动更新 Ollama Docker 服务的脚本
# 创建日期: $(date)
# 设置脚本在遇到错误时立即退出
set -e
# 定义日志文件路径 (确保目录存在)
LOG_FILE="$HOME/.ollama/update.log"
mkdir -p "$(dirname "$LOG_FILE")" # 如果目录不存在,则创建
# 日志记录函数,同时输出到控制台和日志文件
log() {
local timestamp=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$timestamp] $1" | tee -a "$LOG_FILE"
}
# 错误处理函数
handle_error() {
log "错误:脚本在第 $1 行执行失败。"
log "Ollama 更新过程意外中止。"
exit 1
}
# 设置错误捕获
trap 'handle_error $LINENO' ERR
# 开始更新流程
log "启动 Ollama 更新程序..."
# 切换到包含 docker-compose.yml 的目录
cd "$HOME/.ollama" || { log "错误:无法切换到目录 $HOME/.ollama"; exit 1; }
# 拉取最新的 ollama/ollama 镜像
log "正在拉取最新的 Ollama 镜像: ollama/ollama:latest..."
if ! docker pull ollama/ollama:latest; then
log "错误:拉取最新镜像失败。请检查网络连接或 Docker Hub 状态。"
exit 1
fi
log "成功拉取最新镜像。"
# 优雅地停止当前运行的服务
log "正在停止当前的 Ollama 服务 (容器: ollama)..."
# 设置超时时间,并移除孤立的容器(如果存在)
if ! docker-compose down --timeout 120 --remove-orphans; then
log "警告:'docker-compose down' 执行时遇到问题,但将继续尝试。"
# 作为备用方案,尝试直接停止和移除容器
if docker ps -a --format '{{.Names}}' | grep -q "^ollama$"; then
log "尝试直接停止并移除 'ollama' 容器..."
docker stop ollama || log "警告:停止 'ollama' 容器失败。"
docker rm ollama || log "警告:移除 'ollama' 容器失败。"
fi
fi
log "旧的 Ollama 服务已停止。"
# 使用新的镜像启动服务
log "正在使用最新镜像启动 Ollama 服务 (docker-compose up -d)..."
if ! docker-compose up -d; then
log "错误:启动 Ollama 服务失败 ('docker-compose up -d')。请检查 Docker Compose 配置和 Docker 状态。"
exit 1
fi
# 验证服务是否成功启动
log "正在验证 Ollama 服务状态..."
# 等待几秒钟让容器充分启动
sleep 5
if docker-compose ps | grep -q "ollama.*(Up|running)" ; then # 检查状态是否为 Up 或 running
log "成功!Ollama 服务已使用最新镜像启动并运行。"
else
log "错误:更新后 Ollama 服务未能正常启动。请检查容器日志:'docker logs ollama'"
# 输出容器日志以帮助诊断
docker logs ollama || true
exit 1
fi
# 清理不再使用的旧 Docker 镜像 (可选但推荐)
log "正在清理未使用的 Docker 镜像..."
docker image prune -f
log "镜像清理完成。"
log "Ollama 更新过程顺利完成。"
# 尝试获取并输出当前运行的 Ollama 版本
log "正在尝试获取当前 Ollama 版本..."
CURRENT_VERSION=$(docker exec ollama ollama --version 2>/dev/null || echo "无法确定版本")
log "当前 Ollama 版本: $CURRENT_VERSION"
exit 0
运行模型
进入容器
docker exec -it ollama bash
ollama --version :oiiama当前版本
ollama ps #查看运行中的模型
ollama list #查看已下载模型
模型生命周期管理
| 操作 | 命令 | 描述 |
|---|---|---|
| 下载模型 | ollama pull <name> | 仅下载不运行 |
| 删除模型 | ollama rm <name> | 释放磁盘空间 |
| 复制模型 | ollama cp src dest | 创建模型副本 |
| 查看模型详情 | ollama show <name> | 显示模型参数和配置信息 |
模型管理
# 拉取模型
docker exec -it ollama ollama pull deepseek-r1:8b
# 查看已安装模型
docker exec -it ollama ollama list
# 删除模型
docker exec -it ollama ollama rm deepseek-r1:8b
模型库
搭建LobeChat
参考文档:完全免费,离线可用!用LobeChat+Ollama搭建本地大模型-我不是咕咕鸽
services:
lobe-chat:
image: lobehub/lobe-chat
container_name: lobe-chat
restart: always
ports:
- '11432:3210'
environment:
ACCESS_CODE: lobe66
OLLAMA_PROXY_URL: http://host.docker.internal:11434/v1
Lobechat配置
先在浏览器输入:http://127.0.0.1:11434

确保ollama在运行中。
再浏览器输入:http://127.0.0.1:11432

点击左上角小人头像:

语言设置这边,把llama3 8B选上:
