【Ollama】docker離線部署Ollama+deepseek

因為要做項目,實驗室的服務器不聯網,所以只能先打包一個基礎的docker環境,然后再在實驗室的服務器上進行解壓和配置環境
參考:https://zhuanlan.zhihu.com/p/23377266873

1.打包基礎的docker環境

這里最好用有cuda的,我選擇跟服務器匹配的cuda環境,安裝系統依賴的時候,最好安裝一個curl,我搞忘了

# 使用帶有CUDA支持的PyTorch官方鏡像
FROM pytorch/pytorch:2.2.1-cuda12.1-cudnn8-runtime# 設置工作目錄
WORKDIR /usr/src/app# 安裝其他系統依賴
RUN apt-get update && apt-get install -y \openssh-server \vim \&& apt-get clean \&& rm -rf /var/lib/apt/lists/*# 3. 配置SSH服務
RUN mkdir /var/run/sshd && \echo 'root:123456' | chpasswd && \sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config && \sed -i 's/#PasswordAuthentication yes/PasswordAuthentication yes/' /etc/ssh/sshd_config

構建鏡像

docker build -t ollama-llm .
docker run -it ollama-llm bash

打包鏡像

docker ps -a //查看容器ID
docker commit 368369a3c853【查到的ID】 ubuntu:test
導出:docker image save ubuntu:test -o sl_sum.tar【名字】

2.下載需要在服務器上進行安裝的資源:

下載大模型:我選擇的是deepseek-1.5b的gguf模型
https://huggingface.co/roleplaiapp/DeepSeek-R1-Distill-Qwen-1.5B-Q2_K-GGUF/tree/main
下載https://github.com/ollama/ollama/releases/里面對應的ollama-linux-amd64.tgz
把這個上傳到服務器指定位置

3.在服務器上進行配置

(1)移動、解壓文件、權限配置:

//移動
mv ~/data1/lib/ollama-linux-amd64.tgz /usr/src/app/ollama
mv ~/data1/lib/deepseek-r1-distill-qwen-1.5b-q2_k.gguf /usr/src/app/ollama/models
//解壓
在/usr/src/app/ollama# 這個路徑下
tar -C /usr -xzf ollama-linux-amd64.tgz
//權限配置
chmod +x /usr/bin/ollama
useradd -r -s /bin/false -m -d /usr/share/ollama ollama

(2)配置ollama.service
命令:

vi /etc/systemd/system/ollama.service

ollama.service文件:

[Unit]
Description=Ollama Service
After=network-online.target[Service]
ExecStart=/usr/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
# 你模型的位置
Environment="OLLAMA_MODELS=/usr/src/app/ollama/models"
# 你要從外面調用服務器的模型一定要設置為這個
Environment="OLLAMA_HOST=0.0.0.0:11434" 
[Install]
WantedBy=default.target

(3)啟動服務

## 啟動Ollama服務
ollama serve

要注意:
在這里插入圖片描述
這里如果是127.0.0.1,本地是連不上服務器的
再打開前記得配置一下:

export OLLAMA_HOST=0.0.0.0:11434

再進行ollama serve,如果顯示0.0.0.0:11434,就對了。

(4)配置模型:
創建Modelfile文件:

//在/models,這里面我放了ds的gguf模型
//創建Modelfile文件,跟模型一個文件夾 /usr/src/app/ollama/models# 
vim deepseek.Modelfile

寫入Modelfile文件,可以自定義輸出格式:

# 這里的名字,跟你模型要一樣
FROM ./deepseek-r1-distill-qwen-1.5b-q2_k.gguf
TEMPLATE """{{ if .System }}<|im_start|>system
{{ .System }}<|im_end|>
{{ end }}{{ if .Prompt }}<|im_start|>user
{{ .Prompt }}<|im_end|>
{{ end }}<|im_start|>assistant
"""
SYSTEM """
你是一個樂于助人的助手,你需要用正經的風格去回答問題。
"""

4.開啟服務

(1)在容器中:

//在/models
//格式:ollama create (name) -f (Modelfile地址)
ollama create deepseek:1.5b -f ./deepseek.Modelfile

使用模型:

ollama run deepseek:1.5b "請用幾句話寫一個中文笑話"

(2)在本地調用

## 啟動Ollama服務
ollama serve

在本地打開一個cmd

curl http://10.20.26.187:11434/api/generate -d '{"model": "deepseek:1.5b","prompt": "請簡單介紹自己","stream": true #是否采用流式輸出
}'

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/80004.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/80004.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/80004.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

如何使用極狐GitLab 軟件包倉庫功能托管 terraform?

極狐GitLab 是 GitLab 在中國的發行版&#xff0c;關于中文參考文檔和資料有&#xff1a; 極狐GitLab 中文文檔極狐GitLab 中文論壇極狐GitLab 官網 Terraform 模塊庫 (BASIC ALL) 基礎設施倉庫和 Terraform 模塊倉庫合并到單個 Terraform 模塊倉庫功能引入于極狐GitLab 15.1…

【QT】深入理解 Qt 中的對象樹:機制、用途與最佳實踐

深入理解 Qt 中的對象樹&#xff1a;機制、用途與最佳實踐 在使用 Qt 編程時&#xff0c;你是否注意到很多對象可以設置“父對象”&#xff1f;比如&#xff1a; QPushButton* btn new QPushButton(parentWidget);這不是簡單的層級結構&#xff0c;而是 Qt 強大而優雅的 對象…

比較入站和出站防火墻規則

組織需要仔細配置防火墻規則&#xff0c;監控網絡的傳入和傳出流量&#xff0c;從而最大限度降低遭受攻擊的風險。在有效管理入站和出站防火墻規則前&#xff0c;了解入站與出站流量的區別至關重要。 一、什么是入站流量&#xff1f; 入站流量指的是并非源自網絡內部&#xf…

Unity-Shader詳解-其五

關于Unity的Shader部分的基礎知識其實已經講解得差不多了&#xff0c;今天我們來一些實例分享&#xff1a; 溶解 效果如下&#xff1a; 代碼如下&#xff1a; Shader "Chapter8/chapter8_1" {Properties{// 定義屬性[NoScaleOffset]_Albedo("Albedo", 2…

COLT_CMDB_linux_userInfo_20250508.sh修復歷史腳本輸出指標信息中userName與輸出信息不一致問題

#!/bin/bash #IT_BEGIN #IT_TYPE3 #IT SYSTEM_LINUX_AGENTUSERDISCOVER|discovery.user[disc] #原型指標 #IT_RULE SYSTEM_LINUX_AGENTUSERGROUPID|groupId[{#USERNAME}] #IT_RULE SYSTEM_LINUX_AGENTUSERHOME|userHome[{#USERNAME}] #IT_RULE SYSTEM_LINUX_AGENTUSERNAME|user…

TCP 與 UDP報文

** TCP 與 UDP報文** 1. 引言 在網絡通信中&#xff0c;TCP&#xff08;傳輸控制協議&#xff09; 和 UDP&#xff08;用戶數據報協議&#xff09; 是兩種最核心的傳輸層協議。它們各自適用于不同的場景&#xff0c;理解其工作原理對開發高性能網絡應用至關重要。本文將詳細解…

LabVIEW燃氣輪機測控系統

在能源需求不斷增長以及生態環境保護備受重視的背景下&#xff0c;微型燃氣輪機憑借其在經濟性、可靠性、維護性及排放性等方面的顯著優勢&#xff0c;在航空航天、分布式發電等眾多領域得到廣泛應用。隨著計算機技術的快速發展&#xff0c;虛擬儀器應運而生&#xff0c;LabVIE…

基于vueflow可拖拽元素的示例(基于官網示例的單文件示例)

效果圖 代碼 <template><div style"width: 100%;height: calc(100vh - 84px)"><VueFlow :nodes"nodes" :edges"edges" drop"onDrop" dragover"onDragOver" dragleave"onDragLeave"><div cl…

筆試專題(十六)

文章目錄 相差不超過k的最多數題解代碼 最長公共子序列&#xff08;一&#xff09;題解代碼 小紅的口罩題解代碼 春游題解代碼 相差不超過k的最多數 題目鏈接 題解 1. 排序 滑動窗口 2. 為什么使用滑動窗口&#xff1f; 因為max-min < k&#xff0c;求這個區間內的數最…

技術視界 | 青龍機器人訓練地形詳解(三):復雜地形精講之臺階

在前兩篇中&#xff0c;我們依次講解了“如何創建一個地形”以及“如何將地形添加到訓練環境中”。從基礎出發&#xff0c;逐步構建機器人可交互的三維仿真環境。在機器人強化學習訓練中&#xff0c;地形的復雜度決定了策略的泛化能力&#xff0c;僅靠 jump_plat 和 jump_pit 等…

MYSQL之索引結構,為何要用B+樹

索引的目的就是為了提高查詢效率 索引的結構是B樹&#xff0c;那么說到B樹&#xff0c;必須提一下其他三種結構&#xff0c;分別是&#xff1a;二叉查找樹、平衡二叉樹、B樹 我們來看看各自的結構特征 二叉查找樹 特點:任何節點的左子節點的值都小于當前節點的值&#xff0c;右…

3.2.3 掌握RDD轉換算子 - 2. 過濾算子 - filter()

在本節課中&#xff0c;我們深入學習了Spark RDD的過濾算子filter()。filter()算子能夠通過指定的函數對RDD中的元素進行篩選&#xff0c;返回一個滿足條件的新RDD&#xff0c;通常新RDD的元素個數會比源RDD少。通過案例演示&#xff0c;我們掌握了如何使用filter()來過濾列表中…

vue3使用輪播圖組件swiper

一、在swiper的官網源碼下載地址 下載Swiper - Swiper中文網 二、官網瀏覽輪播圖類型地址 Swiper演示 - Swiper中文網 三、swiper配置參數地址 中文api - Swiper中文網 四、在vue3項目引入swiper npm install swiper 五、在vue3中使用 官網vue3中使用&#xff1a;Swiper…

MySQL優化-MySQL故障排查與監控

MySQL優化-MySQL故障排查與監控 一、MySQL監控 實時了解數據庫的運行狀態&#xff0c;通過不同的監控指標&#xff0c;識別潛在問題并進行預防。常見得到MySQL監控指標包括&#xff1a;連接數、緩存池命中率、磁盤I/O、查詢執行情況等。 1、監控數據庫狀態變量 MySQL的狀態…

【MongoDB篇】MongoDB的分片操作!

目錄 引言第一節&#xff1a;分片核心概念&#xff1a;為什么要分片&#xff1f;它是什么&#xff1f; &#x1f914;&#x1f4a5;&#x1f680;第二節&#xff1a;分片架構的“三大金剛”&#xff1a;核心組件解析 &#x1f9f1;&#x1f9e0;&#x1f6e3;?第三節&#xff…

C++ 函數類型及實用例題

請各位大佬一鍵三連支持一下 目錄 請各位大佬一鍵三連支持一下 1. 無參數無返回值函數 2. 有參數無返回值函數 3. 無參數有返回值函數 4. 有參數有返回值函數 5. 函數重載 6. 遞歸函數 7. 帶默認參數的函數 8. 內聯函數 下面我將介紹 C 中不同類型的函數&#xff0c;…

AtCoder Beginner Contest 404 A-E 題解

還是ABC好打~比ARC好打多了&#xff08; 題解部分 A - Not Found 給定你一個長度最大25的字符串&#xff0c;任意輸出一個未出現過的小寫字母 簽到題&#xff0c;map或者數組下標查詢一下就好 #include<bits/stdc.h>using namespace std;#define int long long #def…

trae ai編程工具

Trae&#xff0c;致力于成為真正的 AI 工程師&#xff08;The Real Al Engineer&#xff09;。Trae 旗下的 AI IDE 產品&#xff0c;以智能生產力為核心&#xff0c;無縫融入你的開發流程&#xff0c;與你默契配合&#xff0c;更高質量、高效率完成每一個任務。 版本差異 國內…

Web 架構之前后端分離

文章目錄 思維導圖一、引言二、前后端分離的概念代碼示例&#xff08;簡單的前后端分離交互&#xff09;后端&#xff08;使用 Python Flask 框架&#xff09;前端&#xff08;使用 JavaScript 和 jQuery&#xff09; 三、前后端分離的優勢3.1 提高開發效率3.2 代碼可維護性增強…

理解 Elasticsearch 的評分機制和 Explain API

作者&#xff1a;來自 Elastic Kofi Bartlett 深入了解 Elasticsearch 的評分機制并探索 Explain API。 想獲得 Elastic 認證嗎&#xff1f;查看下一期 Elasticsearch Engineer 培訓的時間&#xff01; Elasticsearch 擁有大量新功能&#xff0c;幫助你為你的使用場景構建最佳…