部分內容參考自:使得 docker 容器內部可以訪問宿主機的 ollama 服務_docker 訪問 ollama-CSDN 博客,補充添加了更多的細節,也補充了一個更加簡單的方案。
我測試的系統版本:Ubuntu 24.04.2 LTS noble,查看方式是指令lsb_release -a
。
有時,我們會通過 docker run 或者 docker compose 來起一個服務,這個服務起在了 docker 容器內部,如果想讓這個服務來訪問宿主機的 ollama 服務,從而使用本地的大模型,需要如下:
文章目錄
- 一、配置 ollama 服務監聽 0.0.0.0
- 1. 編輯 systemd 服務文件
- 2. 重啟服務使配置生效
- 3. 驗證監聽地址
- 二、在啟動服務時,要添加內部端口映射
- 1. 172.17.0.1
- 2. host.docker.internal
一、配置 ollama 服務監聽 0.0.0.0
默認的 ollama 服務只監聽 127.0.0.1:11434,docker 容器內部是無法訪問到這個的(哪怕通過訪問主機 ip:11434 也不可以)
1. 編輯 systemd 服務文件
打開 Ollama 的 systemd 服務配置文件:
sudo vim /etc/systemd/system/ollama.service
在 [Service]
部分添加監聽地址的環境變量:
[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434" # 設置監聽所有網絡接口
如果你的 Environment 已經有內容了,可以用逗號分隔,如下:
2. 重啟服務使配置生效
sudo systemctl daemon-reload # 重新加載服務配置
sudo systemctl restart ollama # 重啟服務
sudo systemctl status ollama # 檢查服務狀態是否正常
不出意外的話可以看到Listening on [::]:11434
:
3. 驗證監聽地址
運行以下命令,檢查 Ollama 是否已監聽 0.0.0.0:11434
:
netstat -tuln | grep 11434 # 輸出應為 ":::11434"
二、在啟動服務時,要添加內部端口映射
添加端口映射有兩種方案,兩種方案都挺簡單的,大家可以參考一下:
1. 172.17.0.1
這種方式你的 docker 運行指令和 docker_compose.yml 文件都不用變,訪問主機上的服務用http://172.17.0.1:端口號
就可以了,比如 ollama 可以用http://172.17.0.1:11434
,這是 docker 自帶的網橋。
你可以直接通過指定 url 為:https://172.17.0.1:11434 來訪問宿主機的 ollama 服務。
驗證方式可以是:
sudo apt install curl
curl https://172.17.0.1:11434
正常情況會輸出Ollama is running
。
2. host.docker.internal
如果使用 docker run 啟動,則需要
docker run --add-host=host.docker.internal:host-gateway -d your-app-image
如果使用 docker compose 啟動,則docker_compose.yml
中應該有如下代碼(僅供參考):
version: '3'
services:your-app:image: your-app-imageenvironment:OLLAMA_API_URL: http://host.docker.internal:11434extra_hosts:- "host.docker.internal:host-gateway" # Linux 需 Docker 20.10+支持
并且你可以通過先切換到 docker_compose.yml 的目錄,再運行docker build -t your-app .
的方式去創建 docker。然后再通過sudo docker run -itd --name "你的 docker 容器的名字" "your-app" /bin/bash
的方式去運行 docker 容器。
也可以通過“docker-compose up -d”的方式去運行。
如果你發現 image 拉取不下來,可以看一下我的博客:【記錄】Docker|Docker 鏡像拉取超時的問題、推薦的解決辦法及安全校驗(以拉取 Ubuntu24.04 為例)_docker 拉取 ubuntu 超時-CSDN 博客
這樣,你便可以通過指定 url 為:https://host.docker.internal:/11434/v1 來訪問宿主機的 ollama 服務。
本賬號所有文章均為原創,歡迎轉載,請注明文章出處:https://shandianchengzi.blog.csdn.net/article/details/151398449。百度和各類采集站皆不可信,搜索請謹慎鑒別。技術類文章一般都有時效性,本人習慣不定期對自己的博文進行修正和更新,因此請訪問出處以查看本文的最新版本。