本文为DeepSeek R1本地Docker部署<实现网页访问/本地终端访问>教程,应该是优快云中r1本地化部署最为全面的博客,欢迎读者评论交流。
DeepSeek是一家专注通用人工智能(AGI)的中国科技公司,主攻大模型研发与应用,经营范围包括技术服务、技术开发、软件开发等。DeepSeek-R1是其开源的推理模型,擅长处理复杂任务且可免费使用。支持联网搜索和深度思考模式。
一、项目背景介绍
先来介绍下项目背景吧,目前有一台空闲的3070服务器,deepseek r1的开源可以让我们有机会自己尝试模型的部署,同时有很多开源适配项目帮我们进行了模型蒸馏,确保我们的低端服务器也可以实现r1模型推理,在此,博主从完全小白的视角进行完整的流程配置(很完整,甚至从硬盘挂载开始…),以下是项目所需工具介绍。
二、所需工具介绍
1.硬件工具
3070服务器,原生安装ubuntu18.04,一块2t机械硬盘
由于该项目所需的存储空间较大,因此选择新装一块2t机械硬盘,将项目中的所有内容存在在该硬盘上。
2.软件工具
Ollama
介绍一下Ollama: Ollama 是一款开源工具,专注于在本地计算机上高效部署和运行大型语言模型(LLM)。它通过简化模型加载、资源优化和交互接口设计,使用户无需依赖云端服务即可体验AI能力,尤其适合对隐私、成本和定制化有需求的场景。
Ollama的核心功能与特点:
- 本地化运行
• 支持主流开源模型(如 Llama 2、Mistral、CodeLlama 等),用户可直接下载并运行模型文件,避免数据上传至第三方服务器。
• 通过量化技术压缩模型体积,降低对硬件(如 GPU 显存)的要求,普通消费级显卡即可运行 7B/13B 参数规模的模型。 - 跨平台与轻量化
• 兼容 macOS、Linux 和 Windows,提供命令行与 API 接口,方便开发者集成到本地应用中。
• 内存占用低,支持多线程优化,可根据硬件自动调整计算资源。 - 生态扩展性
• 开放模型库(如官方托管的 ollama/models),支持用户自定义微调模型或导入 Hugging Face 等平台的模型。
• 社区提供丰富的插件(如 VS Code 扩展、Chatbot 界面),增强交互体验。
Docker
Docker大家应该都比较熟悉,如果此前没有接触过Docker,后面的内容就不用看了,先把这两篇博客看完再看后续内容:在 Ubuntu 中安装 Docker、Linux系统Ubuntu配置Docker详细流程
Docker Desktop
Docker Desktop 是 Docker 公司为桌面操作系统(包括 Windows 和 macOS)开发的一款应用程序,它提供了一种简单的方式在本地计算机上运行 Docker 容器。
为什么我们要使用Docker Desktop?其实本可以不使用Docker Desktop的,但无奈在linux服务器上执行命令docker pull ollama/ollama时会卡住,因此只能曲线救国,在win下先下载好ollama的官方docker镜像,再拷贝至linux服务器上运行。
SSH
SSH没接触过的也不用往下看了,先看懂这篇博客再继续:ssh详解–让你彻底学会ssh
Miniconda3(py3.11)
需要Miniconda3是因为我们为了实现网页端登录访问DeepSeek R1时,需要使用openwebui服务,需要为该服务创建一个conda环境,因此也需要在Ollama官方镜像容器中安装Miniconda3。但注意,openwebui需要python3.11,这里推荐大家用清华开源的Miniconda3镜像,选择适配自己系统的python3.11版本。
三、完整部署流程
1. 服务器硬盘挂载
先从服务器的硬盘挂载开始,
2. 在win环境中下载Docker Desktop
我们本可以在linux服务器上直接下载ollama官方镜像的,但使用down不下来,因此只好现在win中下载了。先下载Docker Desktop,教程如下:【Docker基础】Docker Desktop入门使用指南
简单来说,登录Docker官网:https://www.docker.com/。点击此处下载完安装即可,不用执行其他多余步骤
3. 在Docker Desktop中导出ollama官方docker镜像至win本地
在win下打开Docker Desktop,登录账号。
找到Docker Hub:
在右边搜索:ollama,点击“Search”,结果如下所示:
点击第一个ollama/ollama,点击右上角"Tag":
选择自己需要的版本,我在这里选了两次,分别是latest和0.5.11:
每次选完点击"Pull",如下所示,开始下载:
下载完后,点击“Images”,可以看到自己下载的所有镜像:
下面可参考此文:dockerdesktop 导出镜像,导入镜像
,导出镜像。
简单来说:在win下打开Windows PowerSehll,在终端输入:
docker save -o ollama0.5.11.tar ollama/ollama:0.5.11
如下所示:
执行完毕后,可以在C盘/用户/your name/ 下看到保存的ollama官方镜像包,3.04GB大小:
4. 复制ollama镜像至服务器
把刚才在C盘的ollama0.5.11.tar传到服务器上。
高阶方法是采用SSH命令,先在服务器上输入ifconfig查询服务器IP,然后输入命令:
scp /本地路径/....tar.gz 服务器用户名@服务器IP:~/目标路径/
如果实在不会的话,可用低阶方法,拿U盘拷吧
5. 服务器上加载docker镜像并运行容器
在进行这一步的时候,需要先在服务器上安装好Docker,安装方法上文已给链接。安装好Docker后,加载镜像:
sudo docker load -i ollama0.5.11.tar
此时在服务器终端上执行:docker images
,查看当前系统中所有的镜像,此时你应该只能看到我框出的ollama/ollama:0.5.11镜像,我其余的镜像都是在此镜像的基础上后续保存的。
在服务器上输入nvidia-smi,查看你的显卡device:
我的device是0,这点要记住!
然后在终端输入:
docker run -d --gpus '"device=0"' -v /ollama:/ollama -p 8080:8080 --name ollama ollama/ollama:0.5.11
然后在终端输入命令进入容器:
docker exec -it ollama bash
**此处有一点需要注意:**就是命令中的-p 8080:8080 ,是指宿主机的端口和docker容器内的端口的对应关系:-p 是 --publish 的缩写,用于进行端口映射。冒号前的 8080 是宿主机的端口,冒号后的 8080 是容器内的端口。这意味着将容器内的 8080 端口映射到宿主机的 8080 端口,外部客户端可以通过访问宿主机的 8080 端口来与容器内监听 8080 端口的服务进行通信。
• --name ollama:为容器指定一个自定义的名称 ollama,方便后续对该容器进行管理,例如停止、重启、查看日志等操作时可以直接使用这个名称。
• ollama/ollama:0.5.11:明确要使用的 Docker 镜像及其版本。ollama/ollama 是镜像的名称,0.5.11 是镜像的标签,用于指定特定版本的镜像。
6. 在Docker容器中配置miniconda3
在进入Docker容器后,安装miniconda3,可以安装我之前分享的教程进行安装,在终端输入:
bash Miniconda3-py311_23.5.1-0-Linux-x86_64.sh
完成miniconda的安装,按流程一步步安装完后,需要添加环境变量:
echo 'export PATH="/root/miniconda3/bin:$PATH"' >> ~/.bashrc
使其在当前终端立即生效:
source ~/.bashrc
7. 配置openwebui的conda环境
完成6后,紧接进入base环境:
source activate
然后创建自己的conda环境:
conda create -n openwebui python=3.11
激活环境:
conda activate openwebui
在环境中安装openwebui所需的包:
pip install open-webui
安装内容很多,大概10m-1h,视网速快慢。
8. 在容器中拉取 r1模型
openwebui的环境配置完成后,现在终端输入ollama
,看是否正常:因为我们是直接用ollama的官方Docker镜像跑的,所以应该
如果是这样,则为正常:
然后输入
ollama pull deepseek-r1:7b
如下所示:
可以看到,已经在docker内,通过ollama下载deepseek r1 7b的模型了
当然,如果你的显卡是4090 or others~ ,你也可以下载更大的模型,在ollama官网中,提供了多种deepseek及其他种类模型选择:
点进去后,可以看到其实有很多deepseek模型可供选择:
此处我通过上述命令行选择的是7b大小,即70亿参数的R1模型。
9. 运行open-webui serve
下载完成后,在docker内执行命令:ollama list
,看是否已经有了模型,如下所示为正常:
此时,你可以在容器内激活openwebui环境后执行命令:
open-webui serve
结果如下所示:
可以看到,我们已经在docker内的8080端口成功部署了openwebui服务。
10. 网页端Deepseek R1的访问登录、注册、用户及模型权限管理 / 服务端终端使用
此时,在局域网或anything else 浏览器中输入服务器IP:8080
,如192.23.22.123:8080
。页面打开后,会显示一个注册页面,自己简单填一下即可:
点击“登录”后进入服务页面:
如果你刚才在ollama pull deepseek-r1:7b完成后又pull其他大小的模型,比如ollama pull deepseek-r1:14b,那此时此处可以选择7b或14b的模型,此处我只有一个7b模型:
选好模型后,测试下模型效果,模型大小只有7b,说的也还算是人话**(1.5b基本不说人话)**:
在提问前,我们可以先在服务器终端输入:
watch -n 1 nvidia-smi
然后提问时,可以看到服务器后台的运行情况:
可以看到,服务器总共8G显存用了6G,负载也拉到79%。
但需要注意的是,当多个用户同时访问时,负载并不会线性增加,只会稍许增加,然后推理速度稍慢。
当打开网页但不提问时,负载很低,但是模型初始化后的显存还是一直占着的:
此时左下角点击菜单“管理员面板”:
打开后可以看到所有用户:
可以点击右上角“+”,添加成员
或者通过CSV批量添加成员
CSV批量添加模版如下所示:
添加完用户后,点击“权限组”,可自行添加用户到某个组:
同时可以设置组的权限:
**最后,还有一点极为重要的是:**当你自己为管理员,而其他人为用户时,你需要将你的模型变成public,不然其他用户通过IP:端口登录页面后,是看不到也没法使用模型进行对话的。需要进行如下设置:
或者添加权限组为,并设为“写作”。
否则,如下所示,无法进行对话:
最后,大家可以将该容器保存为一个新的镜像,docker commit xxx,自己搜下命令,镜像比较大, 一般几十个G
再提一句,如果是要在服务器的终端中直接和deepseek r1互动,可以在pull模型后,直接运行模型:
ollama run deepseek-r1:7b
直接进行提问:夏天为什么这么热?
over
以上即为此次DeepSeek R1本地Linux服务器的Docker部署,欢迎交流。