Docker容器訪問宿主機Ollama服務(wù)配置詳細操作步驟
問題描述
當在 Docker 容器中的應(yīng)用(如 RAGFlow)嘗試連接宿主機上的 Ollama 服務(wù)時,會遇到以下錯誤:
CONNECTION_ERROR - litellm.APIConnectionError: Ollama_chatException - [Errno 111] Connection refused
問題原因
- Ollama 默認配置:只監(jiān)聽
127.0.0.1:11434(本地回環(huán)地址) - Docker 容器網(wǎng)絡(luò)隔離:容器內(nèi)的
localhost指向容器自身,無法訪問宿主機的127.0.0.1 - 結(jié)果:Docker 容器無法連接到宿主機的 Ollama 服務(wù)
解決方案概述
讓 Ollama 服務(wù)監(jiān)聽所有網(wǎng)絡(luò)接口(0.0.0.0:11434),使其可以通過宿主機 IP 被 Docker 容器訪問。
詳細操作步驟
步驟 1:獲取宿主機 IP 地址
hostname -I | awk '{print $1}'
示例輸出:
192.168.0.105
?? 記下這個 IP 地址,后續(xù)配置需要使用。
步驟 2:檢查 Ollama 當前監(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ù)運行
sudo systemctl status ollama
如果返回服務(wù)狀態(tài)信息,說明 Ollama 作為系統(tǒng)服務(wù)運行,需要修改服務(wù)配置文件。
如果提示服務(wù)不存在,Ollama 可能是手動啟動的,可以直接用環(huán)境變量啟動。
步驟 4:修改 Ollama 系統(tǒng)服務(wù)配置
4.1 查看當前配置
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:驗證配置是否生效
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 測試通過宿主機 IP 訪問
# 替換 192.168.0.105 為您的宿主機 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ù)不需要)
?? 重要:
- ? 使用宿主機 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:容器仍然無法連接
檢查項:
確認 Ollama 監(jiān)聽地址是否正確:
sudo netstat -tuln | grep 11434
測試宿主機 IP 是否可訪問:
curl http://192.168.0.105:11434/api/tags
檢查防火墻規(guī)則
問題 2:Docker 網(wǎng)絡(luò)模式為 host
如果 Docker 使用 --network host 模式,可以直接使用 localhost:11434。
問題 3:宿主機 IP 地址變化
如果使用 DHCP 動態(tài) IP,可以考慮:
- 配置靜態(tài) IP 地址
- 使用
host.docker.internal(部分 Docker 版本支持) - 在 Docker 啟動時添加:
--add-host=host.docker.internal:host-gateway
完整快捷腳本
將以下內(nèi)容保存為 configure_ollama_for_docker.sh:
#!/bin/bash
echo "?? 開始配置 Ollama 以支持 Docker 容器訪問..."
# 獲取宿主機 IP
HOST_IP=$(hostname -I | awk '{print $1}')
echo "?? 宿主機 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ù)啟動
sleep 3
# 驗證配置
echo "? 驗證配置..."
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 "? 通過宿主機 IP 訪問成功"
echo ""
echo "?? 請在 Docker 應(yīng)用中使用以下配置:"
echo " Base URL: http://$HOST_IP:11434"
echo " 模型名稱: deepseek-r1:1.5b"
else
echo "? 訪問失敗,請檢查防火墻設(shè)置"
fi
使用方法:
chmod +x configure_ollama_for_docker.sh ./configure_ollama_for_docker.sh
手動啟動方式(非系統(tǒng)服務(wù))
如果 Ollama 不是作為系統(tǒng)服務(wù)運行,可以使用以下方式啟動:
# 停止當前運行的 Ollama pkill ollama # 設(shè)置環(huán)境變量并啟動 export OLLAMA_HOST=0.0.0.0:11434 nohup ollama serve > /tmp/ollama.log 2>&1 & # 驗證 sleep 2 netstat -tuln | grep 11434
安全提示
?? 注意事項:
- 局域網(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 容器可以通過宿主機 IP 地址訪問 Ollama 服務(wù)。
關(guān)鍵步驟:
- ? 獲取宿主機 IP 地址
- ? 修改 Ollama 服務(wù)配置添加
OLLAMA_HOST=0.0.0.0:11434 - ? 重啟服務(wù)并驗證
- ? 在 Docker 應(yīng)用中使用
http://宿主機IP:11434
配置完成后,所有 Docker 容器中的應(yīng)用都可以通過宿主機 IP 訪問 Ollama 服務(wù)了!
參考資料
文檔版本:v1.0
更新時間:2025-10-14
適用系統(tǒng):Ubuntu 20.04+, Debian 11+, CentOS 8+
到此這篇關(guān)于Docker容器訪問宿主機Ollama服務(wù)配置的文章就介紹到這了,更多相關(guān)Docker訪問宿主機Ollama服務(wù)配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker實現(xiàn)MySQL數(shù)據(jù)同步的方法
docker的一大好處是在本地可以很方便快速的搭建負載均衡,主從同步等需要多主機的環(huán)境,本文主要介紹了docker實現(xiàn)MySQL數(shù)據(jù)同步的方法,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-03-03
excel導(dǎo)出在docker環(huán)境中總是失敗的問題
這篇文章主要介紹了excel導(dǎo)出在docker環(huán)境中總是失敗的問題及解決方法,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,2020-09-09
docker 編輯Dockerfile 添加php7.2 acpu的問題
這篇文章主要介紹了docker 編輯Dockerfile 添加php7.2 acpu問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-07-07
Linux系統(tǒng)docker部署.net?core3.1的詳細步驟
這篇文章主要介紹了Linux系統(tǒng)docker部署.net?core3.1,文章演示基本的基于docker部署.netcore服務(wù),linux系統(tǒng)騰訊云ubuntu,.net?core版本3.1,需要的朋友可以參考下2022-09-09
如何解決Docker連接本地MySQL服務(wù)失敗的問題
這篇文章主要介紹了如何解決Docker連接本地MySQL服務(wù)失敗的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-06-06
docker環(huán)境下安裝jenkins容器的詳細教程
這篇文章主要介紹了docker環(huán)境下安裝jenkins容器的方法,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
Docker跨服務(wù)器通信Overlay解決方案(上)之 Consul單實例
這篇文章主要介紹了Docker跨服務(wù)器通信Overlay解決方案(上)之 Consul單實例,本文通過場景分析實例代碼相結(jié)合給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-12-12

