Docker容器訪問宿主機(jī)Ollama服務(wù)配置詳細(xì)操作步驟
問題描述
當(dāng)在 Docker 容器中的應(yīng)用(如 RAGFlow)嘗試連接宿主機(jī)上的 Ollama 服務(wù)時(shí),會(huì)遇到以下錯(cuò)誤:
CONNECTION_ERROR - litellm.APIConnectionError: Ollama_chatException - [Errno 111] Connection refused
問題原因
- Ollama 默認(rèn)配置:只監(jiān)聽
127.0.0.1:11434(本地回環(huán)地址) - Docker 容器網(wǎng)絡(luò)隔離:容器內(nèi)的
localhost指向容器自身,無法訪問宿主機(jī)的127.0.0.1 - 結(jié)果:Docker 容器無法連接到宿主機(jī)的 Ollama 服務(wù)
解決方案概述
讓 Ollama 服務(wù)監(jiān)聽所有網(wǎng)絡(luò)接口(0.0.0.0:11434),使其可以通過宿主機(jī) IP 被 Docker 容器訪問。
詳細(xì)操作步驟
步驟 1:獲取宿主機(jī) IP 地址
hostname -I | awk '{print $1}'
示例輸出:
192.168.0.105
?? 記下這個(gè) IP 地址,后續(xù)配置需要使用。
步驟 2:檢查 Ollama 當(dāng)前監(jiān)聽狀態(tài)
sudo netstat -tuln | grep 11434
典型輸出:
tcp 0 0 127.0.0.1:11434 0.0.0.0:* LISTEN
?? 如果顯示
127.0.0.1:11434,說明只監(jiān)聽本地,需要修改配置。
步驟 3:檢查 Ollama 是否作為系統(tǒng)服務(wù)運(yùn)行
sudo systemctl status ollama
如果返回服務(wù)狀態(tài)信息,說明 Ollama 作為系統(tǒng)服務(wù)運(yùn)行,需要修改服務(wù)配置文件。
如果提示服務(wù)不存在,Ollama 可能是手動(dòng)啟動(dòng)的,可以直接用環(huán)境變量啟動(dòng)。
步驟 4:修改 Ollama 系統(tǒng)服務(wù)配置
4.1 查看當(dāng)前配置
cat /etc/systemd/system/ollama.service
4.2 修改配置文件
使用以下命令修改配置文件,添加 OLLAMA_HOST 環(huán)境變量:
sudo nano /etc/systemd/system/ollama.service
或者直接使用命令一次性修改(推薦):
sudo tee /etc/systemd/system/ollama.service > /dev/null << 'EOF' [Unit] Description=Ollama Service After=network-online.target [Service] ExecStart=/usr/local/bin/ollama serve User=ollama Group=ollama Restart=always RestartSec=3 Environment="PATH=/opt/TensorRT-10.9.0.34/bin:/opt/ros/humble/bin:/home/wanglin/miniconda3/bin:/home/wanglin/miniconda3/condabin:/usr/local/cuda-12.1/bin:/home/wanglin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin" Environment="OLLAMA_HOST=0.0.0.0:11434" [Install] WantedBy=default.target EOF
?? 關(guān)鍵配置:
Environment="OLLAMA_HOST=0.0.0.0:11434"
步驟 5:重新加載配置并重啟服務(wù)
# 重新加載 systemd 配置 sudo systemctl daemon-reload # 重啟 Ollama 服務(wù) sudo systemctl restart ollama # 檢查服務(wù)狀態(tài) sudo systemctl status ollama
步驟 6:驗(yàn)證配置是否生效
6.1 檢查監(jiān)聽地址
sudo netstat -tuln | grep 11434
期望輸出(監(jiān)聽所有接口):
tcp6 0 0 :::11434 :::* LISTEN
?
:::11434表示監(jiān)聽所有網(wǎng)絡(luò)接口(IPv4 和 IPv6)
6.2 測試通過宿主機(jī) IP 訪問
# 替換 192.168.0.105 為您的宿主機(jī) IP curl http://192.168.0.105:11434/api/tags
成功輸出示例:
{
"models": [
{
"name": "deepseek-r1:1.5b",
"model": "deepseek-r1:1.5b",
...
}
]
}
6.3 測試聊天功能
curl -X POST http://192.168.0.105:11434/api/generate \
-d '{"model": "deepseek-r1:1.5b", "prompt": "你好", "stream": false}'
步驟 7:在 RAGFlow(或其他 Docker 應(yīng)用)中配置
配置參數(shù)
訪問 RAGFlow 模型設(shè)置頁面:http://localhost:8880/user-setting/model
Ollama 配置:
- Base URL / API 地址:
http://192.168.0.105:11434 - 模型名稱:
deepseek-r1:1.5b(或其他已安裝的模型) - API Key:留空(Ollama 本地服務(wù)不需要)
?? 重要:
- ? 使用宿主機(jī) IP:
http://192.168.0.105:11434- ? 不要使用:
http://localhost:11434或http://127.0.0.1:11434
防火墻配置(可選)
如果系統(tǒng)啟用了防火墻,需要開放 11434 端口:
Ubuntu/Debian (UFW)
sudo ufw allow 11434/tcp sudo ufw reload
CentOS/RHEL (firewalld)
sudo firewall-cmd --permanent --add-port=11434/tcp sudo firewall-cmd --reload
常見問題排查
問題 1:容器仍然無法連接
檢查項(xiàng):
確認(rèn) Ollama 監(jiān)聽地址是否正確:
sudo netstat -tuln | grep 11434
測試宿主機(jī) IP 是否可訪問:
curl http://192.168.0.105:11434/api/tags
檢查防火墻規(guī)則
問題 2:Docker 網(wǎng)絡(luò)模式為 host
如果 Docker 使用 --network host 模式,可以直接使用 localhost:11434。
問題 3:宿主機(jī) IP 地址變化
如果使用 DHCP 動(dòng)態(tài) IP,可以考慮:
- 配置靜態(tài) IP 地址
- 使用
host.docker.internal(部分 Docker 版本支持) - 在 Docker 啟動(dòng)時(shí)添加:
--add-host=host.docker.internal:host-gateway
完整快捷腳本
將以下內(nèi)容保存為 configure_ollama_for_docker.sh:
#!/bin/bash
echo "?? 開始配置 Ollama 以支持 Docker 容器訪問..."
# 獲取宿主機(jī) IP
HOST_IP=$(hostname -I | awk '{print $1}')
echo "?? 宿主機(jī) IP: $HOST_IP"
# 修改 Ollama 服務(wù)配置
echo "?? 修改 Ollama 服務(wù)配置..."
sudo tee /etc/systemd/system/ollama.service > /dev/null << 'EOF'
[Unit]
Description=Ollama Service
After=network-online.target
[Service]
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/opt/TensorRT-10.9.0.34/bin:/opt/ros/humble/bin:/home/wanglin/miniconda3/bin:/home/wanglin/miniconda3/condabin:/usr/local/cuda-12.1/bin:/home/wanglin/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin"
Environment="OLLAMA_HOST=0.0.0.0:11434"
[Install]
WantedBy=default.target
EOF
# 重新加載并重啟服務(wù)
echo "?? 重啟 Ollama 服務(wù)..."
sudo systemctl daemon-reload
sudo systemctl restart ollama
# 等待服務(wù)啟動(dòng)
sleep 3
# 驗(yàn)證配置
echo "? 驗(yàn)證配置..."
if sudo netstat -tuln | grep -q ":::11434"; then
echo "? Ollama 已成功監(jiān)聽所有網(wǎng)絡(luò)接口"
else
echo "? Ollama 監(jiān)聽配置可能有問題"
fi
# 測試訪問
echo "?? 測試訪問..."
if curl -s http://$HOST_IP:11434/api/tags > /dev/null; then
echo "? 通過宿主機(jī) IP 訪問成功"
echo ""
echo "?? 請(qǐng)?jiān)?Docker 應(yīng)用中使用以下配置:"
echo " Base URL: http://$HOST_IP:11434"
echo " 模型名稱: deepseek-r1:1.5b"
else
echo "? 訪問失敗,請(qǐng)檢查防火墻設(shè)置"
fi
使用方法:
chmod +x configure_ollama_for_docker.sh ./configure_ollama_for_docker.sh
手動(dòng)啟動(dòng)方式(非系統(tǒng)服務(wù))
如果 Ollama 不是作為系統(tǒng)服務(wù)運(yùn)行,可以使用以下方式啟動(dòng):
# 停止當(dāng)前運(yùn)行的 Ollama pkill ollama # 設(shè)置環(huán)境變量并啟動(dòng) export OLLAMA_HOST=0.0.0.0:11434 nohup ollama serve > /tmp/ollama.log 2>&1 & # 驗(yàn)證 sleep 2 netstat -tuln | grep 11434
安全提示
?? 注意事項(xiàng):
- 局域網(wǎng)訪問:配置后 Ollama 可被局域網(wǎng)內(nèi)其他設(shè)備訪問
- 生產(chǎn)環(huán)境:建議配置防火墻規(guī)則,只允許特定 IP 訪問
- 敏感數(shù)據(jù):不要在公網(wǎng)環(huán)境中暴露 Ollama 服務(wù)
限制訪問的防火墻規(guī)則:
# 只允許 Docker 網(wǎng)橋訪問 sudo ufw allow from 172.17.0.0/16 to any port 11434 # 或只允許特定 IP 段 sudo ufw allow from 192.168.0.0/24 to any port 11434
總結(jié)
通過修改 Ollama 服務(wù)配置,將監(jiān)聽地址從 127.0.0.1:11434 改為 0.0.0.0:11434,使得 Docker 容器可以通過宿主機(jī) IP 地址訪問 Ollama 服務(wù)。
關(guān)鍵步驟:
- ? 獲取宿主機(jī) IP 地址
- ? 修改 Ollama 服務(wù)配置添加
OLLAMA_HOST=0.0.0.0:11434 - ? 重啟服務(wù)并驗(yàn)證
- ? 在 Docker 應(yīng)用中使用
http://宿主機(jī)IP:11434
配置完成后,所有 Docker 容器中的應(yīng)用都可以通過宿主機(jī) IP 訪問 Ollama 服務(wù)了!
參考資料
文檔版本:v1.0
更新時(shí)間:2025-10-14
適用系統(tǒng):Ubuntu 20.04+, Debian 11+, CentOS 8+
到此這篇關(guān)于Docker容器訪問宿主機(jī)Ollama服務(wù)配置的文章就介紹到這了,更多相關(guān)Docker訪問宿主機(jī)Ollama服務(wù)配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker?Compose中配置Host網(wǎng)絡(luò)模式的具體方法及注意事項(xiàng)
Docker Compose 是一個(gè)用于定義和運(yùn)行多容器 Docker 應(yīng)用程序的工具,下面這篇文章主要介紹了Docker?Compose中配置Host網(wǎng)絡(luò)模式的具體方法及注意事項(xiàng),文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-09-09
Docker配置SSL證書實(shí)現(xiàn)遠(yuǎn)程訪問
本文主要介紹了使用OpenSSL生成CA證書和服務(wù)器證書并配置Docker以支持SSL連接實(shí)現(xiàn)遠(yuǎn)程訪問,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2025-01-01
解決docker容器中出現(xiàn)Access denied for user &apo
這篇文章主要介紹了解決docker容器中出現(xiàn)Access denied for user 'root'@'172.17.0.2'(using password: YES)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-06-06
docker部署vue項(xiàng)目的實(shí)現(xiàn)步驟
當(dāng)我們?cè)诒镜亻_發(fā)了一個(gè)vue項(xiàng)目之后,肯定是想部署到服務(wù)器上供其他人訪問,本文主要介紹了docker部署vue項(xiàng)目的實(shí)現(xiàn)步驟,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-07-07
docker啟動(dòng)nginx及常見nginx配置方式
這篇文章主要介紹了docker啟動(dòng)nginx及常見nginx配置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
docker-compose部署redis報(bào)錯(cuò)ERR Client sent AUTH,&
這篇文章主要介紹了docker-compose部署redis報(bào)錯(cuò)ERR Client sent AUTH, but no password is set問題及解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2025-10-10
詳解如何修改 Docker 默認(rèn)網(wǎng)橋地址
這篇文章主要介紹了詳解如何修改 Docker 默認(rèn)網(wǎng)橋地址,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-05-05

