设置 Ollama 容器自动重启和模型自动加载的方法

目录

前言

一、容器自启动

[✅ 方法一:在启动容器时直接加入 --restart=always](#✅ 方法一:在启动容器时直接加入 --restart=always)

[✅ 方法二:如果容器已创建,只需修改 restart policy](#✅ 方法二:如果容器已创建,只需修改 restart policy)

[🧪 验证是否自动启动](#🧪 验证是否自动启动)

[📌 注意事项](#📌 注意事项)

二、模型自加载

方案:给容器增加自动加载脚本

[1. 创建一个 entrypoint/warmup 脚本](#1. 创建一个 entrypoint/warmup 脚本)

[2. 修改 docker run,让容器使用此脚本作为 Entrypoint](#2. 修改 docker run,让容器使用此脚本作为 Entrypoint)

[🔥 结果效果](#🔥 结果效果)


前言

当使用Docker的方式部署了ollama容器之后,如果遇到主机重启,那么ollama容器并不会自动重启,其中已经下载好的模型也不会自动加载。针对这种情况,下面我将详述如何设置ollama容器的自动启动和自动加载所需要的模型。

一、容器自启动

要让 Ollama 容器在主机重启后自动启动,有两种常见方式:

方法一:在启动容器时直接加入 --restart=always

如果你是使用 docker run 启动容器,那么只需要添加:

bash 复制代码
--restart=always

例如:

bash 复制代码
sudo docker run -d \
  --gpus=all \
  --restart=always \
  -v /ollama_weights:/root/.ollama \
  -p 11434:11434 \
  --network host
  --name ollama \
  ollama/ollama:latest

这样 Docker 会保证:

重启情况 容器是否自动启动
主机重启 ✔ 自动启动
Docker 服务重启 ✔ 自动启动
容器退出(异常) ✔ 自动重启
手动 docker stop ✘ 不会重启(因为你是手动关的)

方法二:如果容器已创建,只需修改 restart policy

如果 你已经创建了容器,可以直接修改它的 restart policy,而不需要重建容器:

bash 复制代码
sudo docker update --restart=always ollama

查看是否设置成功:

bash 复制代码
sudo docker inspect -f '{{.HostConfig.RestartPolicy.Name}}' ollama

如果输出:

bash 复制代码
always

说明设置成功。

🧪 验证是否自动启动

你可以亲自测试:

① 重启 Docker 服务

bash 复制代码
sudo systemctl restart docker

然后查看容器是否自动启动:

bash 复制代码
sudo docker ps | grep ollama

② 重启整台机器

bash 复制代码
sudo reboot

系统启动后:

bash 复制代码
sudo docker ps | grep ollama

如果仍然在运行,就说明自动启动成功。

📌 注意事项

✔ 如果你的容器是通过 docker-compose 启动

需要在 docker-compose.yml 中加入:

bash 复制代码
restart: always

二、模型自加载

容器中启动的 Ollama 不会在重启时自动 pull/运行模型 。它只会在你调用时(如 ollama run xxx)动态加载。如果你希望容器重启后 模型自动就绪 ,需要:在容器启动后主动运行一次模型。

例如:

bash 复制代码
ollama run qwen2.5:14b "hello"

这一步会 强制模型加载到本地并初始化,后续请求就不会卡在第一次编译/加载上。

方案:给容器增加自动加载脚本

1. 创建一个 entrypoint/warmup 脚本

在宿主机 (比如/dify_workspace/ollama_weights/目录下) 新建文件:

/dify_workspace/ollama_weights/init_models.sh

bash 复制代码
#!/bin/sh

# 后台启动 ollama 服务
ollama serve &

# 等待服务就绪
sleep 5

# 自动预加载你需要的模型(不会输出内容)
ollama run qwen2.5:14b "warmup" >/dev/null 2>&1
ollama run shaw/dmeta-embedding-zh:latest "warmup" >/dev/null 2>&1

# 保持前台运行
wait

给权限:

bash 复制代码
chmod +x /dify_workspace/ollama_weights/init_models.sh

2. 修改 docker run,让容器使用此脚本作为 Entrypoint

替代你现在的启动命令:

bash 复制代码
docker run -d --gpus=all \
  --restart=always \
  -v /dify_workspace/ollama_weights:/root/.ollama \
  -v /dify_workspace/ollama_weights/init_models.sh:/init_models.sh \
  -p 11434:11434 \
  --network host \
  --name ollama \
  --entrypoint /bin/sh \
  ollama/ollama:latest /init_models.sh

注意使用:

bash 复制代码
--entrypoint /bin/sh

来替换镜像默认入口点。

这样容器启动时将:

  1. 启动 ollama 服务

  2. 自动 warm-up(加载)模型

  3. 保持前台运行

🔥 结果效果

功能 实现
模型文件持久保存 /root/.ollama 映射到宿主机
容器重启后自动加载模型 ollama run xxx 自动 warm-up
避免第一次调用卡顿 ✔ 预热机制
自动运行 + 自动恢复 ✔ 使用 entrypoint 或 compose

相关推荐
工藤学编程11 小时前
零基础学AI大模型之LangChain智能体之initialize_agent开发实战
人工智能·langchain
king王一帅12 小时前
Incremark Solid 版本上线:Vue/React/Svelte/Solid 四大框架,统一体验
前端·javascript·人工智能
泰迪智能科技14 小时前
分享|职业技术培训|数字技术应用工程师快问快答
人工智能
Dxy123931021616 小时前
如何给AI提问:让机器高效理解你的需求
人工智能
少林码僧16 小时前
2.31 机器学习神器项目实战:如何在真实项目中应用XGBoost等算法
人工智能·python·算法·机器学习·ai·数据挖掘
钱彬 (Qian Bin)16 小时前
项目实践15—全球证件智能识别系统(切换为Qwen3-VL-8B-Instruct图文多模态大模型)
人工智能·算法·机器学习·多模态·全球证件识别
没学上了16 小时前
CNNMNIST
人工智能·深度学习
宝贝儿好17 小时前
【强化学习】第六章:无模型控制:在轨MC控制、在轨时序差分学习(Sarsa)、离轨学习(Q-learning)
人工智能·python·深度学习·学习·机器学习·机器人
智驱力人工智能17 小时前
守护流动的规则 基于视觉分析的穿越导流线区检测技术工程实践 交通路口导流区穿越实时预警技术 智慧交通部署指南
人工智能·opencv·安全·目标检测·计算机视觉·cnn·边缘计算
AI产品备案17 小时前
生成式人工智能大模型备案制度与发展要求
人工智能·深度学习·大模型备案·算法备案·大模型登记