当前位置: 首页 > news >正文

Docker与Ollama强强联合!deepseek-r1部署实践

我们之前的博客介绍了如何构建一个包含Ollama框架和qwen2.5-3B 模型的Docker镜像,并通过Docker Compose快速移植部署到离线环境,今天我们继续带来deepseek-r1的部署实践!

1 拉取ollama镜像

# 拉取ollama 
docker pull ollama/ollama

2 运行Ollama并下载deepseek-r1

2.1 运行Ollama

# 运行ollama 
docker run -d --restart=always -p 11434:11434 --name ollama ollama/ollama

2.2 下载deepseek-r1

# 进入容器
docker exec -it c81c97a47a52 bash

[root@node3 ~]# docker exec -it c81c97a47a52 bash
root@c81c97a47a52:/# 

# 下载模型
ollama run deepseek-r1:1.5b

root@c81c97a47a52:/# ollama pull deepseek-r1:1.5b
pulling manifest 
pulling aabd4debf0c8... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.1 GB                         
pulling 369ca498f347... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  387 B                         
pulling 6e4c38e1172f... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏ 1.1 KB                         
pulling f4d24e9138dd... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  148 B                         
pulling a85fe2a2e58e... 100% ▕█████████████████████████████████████████████████████████████████████████████████████████████████████████████████▏  487 B                         
verifying sha256 digest 
writing manifest 
success 
root@c81c97a47a52:/# 

2.3 验证模型是否下载

docker exec -it ollama bash
ollama list

root@c81c97a47a52:/# ollama list
NAME                ID              SIZE      MODIFIED      
deepseek-r1:1.5b    a42b25d8c10a    1.1 GB    3 minutes ago    
root@c81c97a47a52:/# 

3 提交修改容器为新镜像

# 提交容器为新镜像
docker commit ollama ollama_deepseek-r1_1.5b:latest

[root@node3 ~]# docker commit ollama ollama_deepseek-r1_1.5b:latest
sha256:35b671db80b39509b5afdbf9443216d69e2fcb9df0334495f8f3dbdb76f8778c
[root@node3 ~]# 

4 打包镜像并分发

4.1 保存镜像为tar文件

docker save -o ollama_deepseek-r1_1.5b.tar ollama_deepseek-r1_1.5b:latest

[root@node3 ~]# docker save -o ollama_deepseek-r1_1.5b.tar ollama_deepseek-r1_1.5b:latest

[root@node3 ~]# 

4.2 分发与加载镜像

# 将生成的tar文件传输到目标服务器,执行以下命令加载
docker load -i ollama_deepseek-r1_1.5b.tar

[root@node1 ai]# docker load -i ollama_deepseek-r1_1.5b.tar
fffe76c64ef2: Loading layer [==================================================>]  75.19MB/75.19MB
ae8280b0d22b: Loading layer [==================================================>]  6.975MB/6.975MB
d3199b7e3644: Loading layer [==================================================>]  31.88MB/31.88MB
4f1e5717e84e: Loading layer [=====================>                             ]  1.452GB/3.341GB
4f1e5717e84e: Loading layer [==================================================>]  3.341GB/3.341GB
1d97a5efebc4: Loading layer [==================================================>]  1.117GB/1.117GB
Loaded image: ollama_deepseek-r1_1.5b:latest
[root@node1 ai]# 

5 部署与使用

5.1 创建docker-compose.yml文件

# 创建docker-compose.yml文件并添加如下内容
version: '3'
services:
  ollama:
    image: ollama_deepseek-r1_1.5b:latest
    container_name: ollama_deepseek
    ports:
      - "11434:11434"
    restart: always

5.2 启动服务

# 在包含docker-compose.yml的目录中运行以下命令:
docker-compose up -d

[root@node1 ai]# docker ps 
CONTAINER ID   IMAGE                            COMMAND                  CREATED         STATUS         PORTS                                           NAMES
914953d0f47f   ollama_deepseek-r1_1.5b:latest   "/bin/ollama serve"      9 seconds ago   Up 8 seconds   0.0.0.0:11434->11434/tcp, :::11434->11434/tcp   ollama_deepseek
6f3796955f23   nginx                            "/docker-entrypoint.…"   8 days ago      Up 3 days      0.0.0.0:8090->80/tcp, [::]:8090->80/tcp         nginx_compose
[root@node1 ai]# 

5.3 调用模型

curl --location --request POST 'http://127.0.0.1:11434/v1/chat/completions' \
--header 'Content-Type: application/json' \
--data '{
    "model": "deepseek-r1:1.5b",
    "messages": [
        {
        "role": "user",
        "content": "你好"
        }
    ],
    "stream": false
}'


[root@node1 ai]# curl --location --request POST 'http://127.0.0.1:11434/v1/chat/completions' \
> --header 'Content-Type: application/json' \
> --data '{
>     "model": "deepseek-r1:1.5b",
>     "messages": [
>         {
>         "role": "user",
>         "content": "你好"
>         }
>     ],
>     "stream": false
> }'
{"id":"chatcmpl-611","object":"chat.completion","created":1742568579,"model":"deepseek-r1:1.5b","system_fingerprint":"fp_ollama","choices":[{"index":0,"message":{"role":"assistant","content":"\u003cthink\u003e\n\n\u003c/think\u003e\n\n你好!很高兴见到你。有什么我可以帮你的吗?"},"finish_reason":"stop"}],"usage":{"prompt_tokens":4,"completion_tokens":17,"total_tokens":21}}
[root@node1 ai]# 

6 总结

通过以上步骤,我们就完成docker+ollama+deepseek-r1的部署实践啦,你也快去试试吧!

相关文章:

  • FreeRTOS从入门到实战精通指南(一)
  • mne溯源后的数据初步处理方法
  • ubuntu系统/run目录不能执行脚本问题解决
  • 从单任务到多任务:进程与线程如何实现并发?
  • python 标准库之 functools 模块
  • 豪越科技:融合低空经济的消防一体化安全管控解决方案
  • openai agent实践
  • 什么是MCP|工作原理是什么|怎么使用MCP|图解MCP
  • 六十天前端强化训练之第二十七天之Pinia 状态管理全解与购物车实战案例
  • 【Linux】I/O 多路转接:select epoll 技术剖析
  • 安卓 vs iOS 文件系统深度解析:开放自由与封闭安全的终极博弈
  • DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)之添加导出数据功能示例10,TableView15_10带搜索的导出表格示例
  • [DDD架构]不同数据模型DTO、VO、PO、DAO、DO的含义
  • 自动驾驶系统的车辆动力学建模:自行车模型与汽车模型的对比分析
  • Linux:基础IO---文件描述符
  • JavaSE1.0(实战之图书管理系统)
  • FlowMo: 模式搜索+扩散模型提升图像Token化性能
  • 基于Azure Delta Lake和Databricks的安全数据共享(Delta Sharing)
  • C++异常处理完全指南:从原理到实战
  • 操作系统知识点33
  • “三桶油”一季度净赚966亿元:业绩分化加剧,有人欢喜有人愁
  • 据报特斯拉寻找新CEO,马斯克财报会议上表态:把更多时间投入特斯拉
  • 内蒙古公开宣判144件毁林毁草刑案,单起非法占用林地逾250亩
  • 上海科创再出发:“造星”的城和“摘星”的人
  • 范宇任上海宝山区副区长
  • 五部门:开展新就业形态劳动者劳动权益保障水平提升专项行动