环境及安装准备:
系统:Ubuntu 20.04镜像内
GPU:RTX4090
先上结果
step1:镜像内上网代理设置
(需要在线安装时,离线安装可忽略):
下载代理,设置端口号,如7890,和下文端口对应即可
vi /etc/profile 增加
-
export http_proxy=http://宿主机IP:7890
-
export https_proxy=http://宿主机IP:7890
source /etc/profile使配置生效,重新进入镜像
网络测试:curl -x http://宿主机IP:7890 https://api.ollama.ai/v1/version
step2:安装Ollama
在线安装可参考
Ubuntu本地部署DeepSeek-R1模型+Dify构建私人专属AI助手 - 知乎 (zhihu.com)
Linux 本地部署 Deepseek-R1 大模型!附保级教程,真正的国际顶流! - 知乎 (zhihu.com)
离线安装可参考
【保姆级教程】手把手教你离线安装Ollama - 知乎 (zhihu.com)
实际上还是在线安装了不少相关命令安装包
安装完后,由于是在镜像内部署
执行ps -p 1 -o comm=
返回tini
没有systemd服务,没法执行systemctl daemon-reload和systemctl start ollama命令,ollama设置自启动的时候会失败,此时手动启动ollama,执行以下命令
# 手动启动
ollama serve
然后另开终端,安装或运行模型
注意Installing ollama to /usr/local,后续相关配置在该文件夹下
step3:安装和部署DeepSeek-r1:1.5b
ollama pull deepseek-r1:1.5b
设置GPU运行:export CUDA_VISIBLE_DEVICES=0
ollama run deepseek-r1:1.5b
安装nvtop,查看GPU占用情况
step4:安装和部署DeepSeek-r1:32b
模型默认会安装至~/.ollama/models(镜像)或/usr/share/ollama/.ollama/models(宿主机)文件夹下,由于32b模型文件偏大,4-bit都需要约20G,再加运行时缓存占用空间较大,可以选择将模型安装至指定位置,否则镜像太大
4.1指定位置安装
安装前设置自定义模型的下载路径,创建文件夹并设置权限
mkdir -p /home/data/.ollama/models
chown -R ollama:ollama /home/data/.ollama
export OLLAMA_MODELS="/path/to/your/custom/models"或者在vi /etc/systemd/system/ollama.service中设置
#配置OLLAMA的模型存放路径,默认路径是/usr/share/ollama/.ollama/models/
Environment="OLLAMA_MODELS=/home/data/.ollama/models"
ollama pull deepseek-r1:32b # 模型会下载到指定路径
遇到问题:能访问ollama官网但是pull不成功,通过ollama serve查看初始化参数,发现OLLAMA_MODELS、http_proxy等参数均未设置成功
原因:由于是在容器中配置,采用env | grep OLLAMA名称查看/etc/systemd未生效,
ollama参数详解-胎教版_ollama debug-CSDN博客
直接采用命令:
export OLLAMA_MODELS="/opt/data/private/ds/.ollama/models"
export OLLAMA_HOST="0.0.0.0:11434"
export OLLAMA_ORIGIN="*"
export OLLAMA_LOGS="/opt/data/private/ds/.ollama/logs/"
export http_proxy="http://xxx:1234"
ollama pull deepseek-r1:1.5b运行成功,并且模型存放到了指定路径
ollama rm deepseek-r1:1.5b删除模型,换装ollama rm deepseek-r1:32b到指定路径
镜像内指定路径安装这个问题走了很多弯路,浪费了几天终于装好了
总结:多看故障提示信息
env | grep OLLAMA查看配置是否生效
echo $SHELL查看镜像Shell属于/bin/bash
直接在 文件中 vi /etc/profile 或 /etc/bash.bashrc
配置OLLAMA_MODELS等初始化信息,这样下次启动时不用重复设置,实测 在/etc/bash.bashrc配置重启后生效/
文件19G,可能ubuntu文件大小不支持,安装了几次都是运行的时候模型没了
20250615,又出现模型没了的情况,重启容器环境解决
20250525成功了一次
还是报错,估计是32b的模型太大,运行产生临时文件啥的
运行ollama run deepseek-r1:32b --verbose查看模型运行情况
total duration: 1.164667675s
load duration: 29.238711ms
prompt eval count: 5 token(s)
prompt eval duration: 125.491673ms
prompt eval rate: 39.84 tokens/s
eval count: 40 token(s)
eval duration: 1.008745514s
eval rate: 39.65 tokens/s
export CUDA_VISIBLE_DEVICES=0设置GPU运行
4.2默认位置安装
可用于宿主机直接安装,没有大小限制时
ollama pull deepseek-r1:32b
时间有点长,模型大小19G
ollama run deepseek-r1:32b
GPU占用还可以,回答还比较快,没有并发访问的情况下
step5:安装dify
Ubuntu本地部署DeepSeek-R1模型+Dify构建私人专属AI助手 - 知乎 (zhihu.com)
step5.1安装docker
Ubuntu 22.04下Docker安装(最全指引)_ubuntu22.04 docker 分区-CSDN博客
检查未安装,可以省略安装前先卸载操作系统默认安装的docker那一步
执行ps -p 1 -o comm=
返回tini,Docker/Kubernetes 容器默认使用 Tini 作为轻量级 init 系统(替代 systemd),tini是一个专为容器设计的极简但功能完备的初始化进程(init)。它主要作用于容器环境中,在 Docker 或其他容器技术中作为PID 1 进程运行,导致执行 systemctl status docker命令时,返回:
root@ds:/opt/data# systemctl status docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down
导致Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
deepseek给出了容器内启动 Docker 守护进程(DinD 模式)、通过 Tini 托管 Docker 服务、宿主机 Docker 调用三种方案,并推荐使用挂载宿主机方案:
# 挂载宿主机 Socket 并直接使用(无需容器内运行守护进程) docker run -v /var/run/docker.sock:/var/run/docker.sock -it docker:28.1-cli
(base) root@ds:/opt/data# docker run -v /var/run/docker.sock:/var/run/docker.sock -it docker:28.1-cli
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
仍然返回错误
(base) root@ds:/opt/data# service docker start
* Starting Docker: docker 但是马上查看状态就不running了
(base) root@ds:/opt/data# service docker status
* Docker is not running
原因:采用容器内安装docker,执行命令时:
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
将$(lsb_release -cs) 值更换为
lsb_release -cs命令返回的值:
-
Ubuntu 22.04 →
jammy
-
Ubuntu 20.04 →
focal
-
Ubuntu 18.04 →
bionic
我的是focal
然后apt install docker-ce docker-ce-cli containerd.io
报错
然后apt-get update,,再次执行apt install docker-ce docker-ce-cli containerd.io
docker安装成功,但是没有运行,和ollama一样,手动启动
dockerd &
还是直接在宿主机服务器直接部署dify吧
直接在宿主机局域网实体机部署dify访问服务器镜像内容器ollama11434端口服务,20250527ok