0.简介
公司为生产安全和保密,内部的服务器不可连接外部网络,为了可以在内网环境下部署,采用的方案为ollama(Docker)+Dify(Docker Compose),方便内网环境下迁移和备份,下文将介绍部署的全部过程。
1.镜像拉取
镜像拉取为准备工作,因服务器在内网环境,需要先在可以连接外网的电脑上拉取相关镜像或文件。由于公司笔记本的Windows系统屏蔽了Microsoft Store,导致Docker Desktop安装不成功,故使用虚拟机创建Ubuntu系统,在Ubuntu下进行相关操作。
1.1 ollama
ollama采用docker进行部署,首先拉取ollama docker镜像
sh
docker pull ollama/ollama
通过以下命令可以创建容器
sh
docker run -d --name ollama -v /home/LLM/ollama/models:/usr/share/ollama/.ollama/models -p 11434:11434 ollama/ollama:latest
可以根据实际情况更改配置:
- --name:容器名
- -v:硬盘挂载,
宿主机路径:容器内部路径
- -p:端口映射,
宿主机端口:容器内端口
在Linux非root用户下,ollama模型默认保存位置为/usr/share/ollama/.ollama/models
root用户默认存储在/root/.ollama/models,docker容器默认使用root用户
Tips:-v参数建议不要更改为root用户路径,和模型导入有关,在后文会提到
模型拉取需要进入容器内进行操作
在启动ollama的容器后,通过以下命令查看ollama容器的信息
sh
docker ps | grep ollama
根据容器ID来进入容器内部
sh
docker exec -it 容器ID /bin/bash
模型可以在ollama官网查看

以Deepseek为例,选择14b参数量的模型后,复制右侧的命令到ollama,即可拉取模型并运行
sh
# 拉取模型并运行
ollama run deepseek-r1:14b
# 仅拉取模型
ollama pull deepseek-r1:14b
运行后可以在终端中进行对话测试
已有的模型可以通过 ollama list
命令来查看,模型文件的保存位置可以通过以下命令查看
sh
ollama show deepseek-r1:14b --modelfile
输出结果的第一行就是模型文件的存储位置。至此,ollama相关的镜像文件全部下载完毕。
1.2 Dify
Dify社区版支持多种部署方式,我们选择使用Docker Compose方式来部署
按照官方文档进行操作,首先克隆Dify的源代码到本地环境
sh
# 假设当前最新版本为 0.15.3
git clone https://github.com/langgenius/dify.git --branch 0.15.3
注意:在2025.3.3时,最新版为1.0.0版本,该版本为测试版本,在接入Deepseek时存在严重Bug,无法成功接入,实测0.15.3版本使用正常,建议先使用稳定版本
进入Dify的docker目录并复制环境配置文件
sh
cd dify/docker
cp .env.example .env
根据系统上的Docker Compose版本,选择合适的命令来启动容器
sh
# Docker Compose V2
docker compose up -d
# Docker Compose V1
docker-compose up -d
使用Docker Compose拉取镜像时会受到镜像源的影响,一旦存在拉取失败,全部镜像都会拉取失败,需要配置多个可用国内镜像源才能成功
或者可以逐个拉取所需要的镜像,0.15.3版本所需的各个镜像为:
REPOSITORY | TAG | SIZE |
---|---|---|
ubuntu/squid | latest | 243MB |
postgres | 15-alpine | 273MB |
langgenius/dify-web | 0.15.3 | 436MB |
langgenius/dify-api | 0.15.3 | 2.97GB |
nginx | latest | 192MB |
redis | 6-alpine | 30.2MB |
langgenius/dify-sandbox | 0.2.10 | 567MB |
semitechnologies/weaviate | 1.19.0 | 52.5MB |
镜像拉取成功后使用 docker compose up -d
命令启动Dify,服务器所使用的Docker没有集成Docker Compose工具,需要手动进行安装。(参考手动安装docker compose - 博客园进行安装,内网服务器选用独立安装的方式离线安装)
Dify默认使用80端口,可以通过.env文件进行修改,部署时可以根据实际情况修改
首次启动需要访问以下地址设置管理员账户:
http://your_server_ip/install
访问主页面进入以下地址:
http://your_server_ip
如需要停止容器,使用
sh
docker compose down
2.镜像导出
2.1 Docker镜像导出
使用以下命令查看本机docker镜像,并根据镜像ID保存对应镜像到本地
sh
docker images
docker save 镜像ID > 文件名.tar
将所需要的全部docker镜像都导出(包括ollama和Dify)
Dify导出镜像的同时还需要将上一步操作的Dify/docker文件夹也复制导出,该文件夹会存储Dify的全部配置以及相关数据,为Dify运行的主目录
2.2 模型文件导出
在ollama容器内下载的模型,首先查看模型文件的存储位置
sh
ollama show deepseek-r1:14b --modelfile
ollama docker内,模型默认存储在/root/.ollama/models/blobs下,该路径下还存有一些验证文件,一个模型文件+三个验证文件共四个文件

将这些文件复制到上一步启动时挂载的路径下,这样就可以在宿主机中操作这些文件了,通过cp命令来复制
sh
cp 源文件 目标文件
这是我踩的一个坑,参考博客 数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台 时,该博客并未提到ollama在首次运行或下载Deepseek模型时会进行验证,在按照博客的步骤导入服务器后ollama运行报错验证失败,也没有查到相关的解决方法,在花费一些时间后才发现还需要迁移这些验证文件,实属不易。
除模型文件外还需要导出一个ModelFile文件,用于后续模型导入,该文件也放入blobs文件夹下
ollama show deepseek-r1:14b --modelfile > Modelfile
2.3 传输文件到物理机
VirtualBox创建的虚拟机,可使用自带的共享文件夹功能将保存后的镜像文件传输到物理机中,具体可参考:手把手教你在VirtualBox中与主机共享文件夹_virtualbox共享文件夹在哪-CSDN博客
将全部所需文件传输到物理机,再通过物理机传输到内网服务器中。
3.镜像导入及启动
将镜像传输到服务器后,进行导入
sh
docker load -i 文件名.tar
通过该命令导入镜像后,会丢失镜像的标签信息,需要再手动添加标签信息
sh
docker tag 镜像ID 镜像名:版本
# 以 Ubuntu/squid 为例
docker tag 镜像ID ubuntu/squid:latest
3.1 ollama
在服务器上创建ollama docker容器
sh
docker run -d --name ollama -v /home/LLM/ollama/models:/usr/share/ollama/.ollama/models -p 11434:11434 ollama/ollama:latest
容器创建成功后访问 http://your_server_ip:11434
可以看到Ollama is running的消息提示
/home/LLM/ollama/models目录为自定义的服务器存储模型文件的路径,这个路径要挂载到容器上,以便容器内部进行访问
将模型文件夹blobs存储到你设置的这个目录下,进入ollama容器内部
sh
docker ps | grep ollama
docker exec -it ollama容器ID /bin/bash
在容器内切换到挂载的路径/usr/share/ollama/.ollama/models/blobs
打开之前导出的ModelFile文件,修改第一行的路径,指向挂载的路径
FROM /usr/share/ollama/.ollama/models/blobs/sha256-6e9f90f02bb3b39b59e81916e8cfce9deb45aeaeb9a54a5be4414486b907dc1e
使用以下命令导入模型
sh
ollama create 模型名 -f Modelfile文件路径
导入成功会返回成功的提示,chat模型可以通过run命令运行测试
sh
ollama run deepseek-r1:14b
3.2 Dify
将上一步导出的Dify/docker文件夹放置在服务器指定位置,进入该目录后通过Docker Compose工具再次启动即可,若镜像导入无问题,就可以直接启动成功
如果服务器的Docker不包含Docker Compose工具,1.2中已经介绍了离线安装Docker Compose的方法
4.Dify使用
启动完成后即可正常访问Dify,在设置页可以配置ollama,这样就可以配置Deepseek模型了,Dify的使用可以参考官方文档
5.结束语
Deepseek的突然爆火使得AI相关应用再一次迎来了发展,相关的博客或知识还在逐步增加中,这次的部署可参考的不多,且过于杂乱,本文总结了我在部署时遇到的问题,希望可以给大家一些帮助。
参考
数据不出内网:基于Ollama+OneAPI构建企业专属DeepSeek智能中台
Docker - 实现本地镜像的导出、导入(export、import、save、load)
Dify丝滑云或本地docker部署步骤 适用Linux & macOS
docker常用命令大全(详细版),Linux运维开发经验的有效总结
docker load -i 导入后 看不到image镜像_docker load之后,镜像不见了-CSDN博客
linux加载tar文件成镜像找不到问题及解决办法_docker load 后找不到镜像-CSDN博客
手把手教你在VirtualBox中与主机共享文件夹_virtualbox共享文件夹在哪-CSDN博客
使用 Docker 安装 Ollama 部署本地大模型并接入 One-API_docker_程序员羊羊-云原生技术专区