ARTIFACT // DIAGNOSE-CONTAINER-LLM.SH (SHELL)
容器连不上宿主机本地模型:最小复现与跨平台诊断脚本 (diagnose-container-llm.sh)
自动排查宿主机 127.0.0.1 监听限制、容器内 host.docker.internal 解析与 Linux 网桥防火墙拦截。
[核心实测结论 / TL;DR]本配置包「容器连不上宿主机本地模型:最小复现与跨平台诊断脚本」(文件名:diagnose-container-llm.sh,格式:SHELL)是 Tinker AI 实测工坊配套指南《container-to-host-llm-networking》的参数化生产模板。支持在本地浏览器实时定制 宿主机模型服务端口 (HOST_PORT=11434)、发起请求的容器名称 (CONTAINER_NAME=tinker-open-webui) 等 2 项核心变量,默认遵循 127.0.0.1 回环绑定与最小权限规范。
04 // DIAGNOSISAPI 与部署排障· 验证日期:2026-10-23
查看全部 42 套配置附件 →diagnose-container-llm.sh
查看配套实测指南 →容器连不上宿主机本地模型:最小复现与跨平台诊断脚本
自动排查宿主机 127.0.0.1 监听限制、容器内 host.docker.internal 解析与 Linux 网桥防火墙拦截。
参数化定制变量 (Variables — 自动保存在本地浏览器)
UTF-8 编码 · 零延迟实时编译
#!/usr/bin/env bash # Tinker AI Troubleshooting — Container <-> Host Local Model Diagnostic (Guide #6) set -euo pipefail PORT="11434" CONTAINER="tinker-open-webui" echo "=== Step 1: Check Host Listening Address on Port $PORT ===" if lsof -nP -iTCP:"$PORT" -sTCP:LISTEN 2>/dev/null | grep -q "127.0.0.1:$PORT"; then echo "[FAIL] Host service is bound ONLY to 127.0.0.1:$PORT." echo " -> Fix: Set OLLAMA_HOST=0.0.0.0:$PORT on the host service and restart." else echo "[OK] Host service is not restricted to loopback only." fi echo "=== Step 2: Probe host.docker.internal from inside $CONTAINER ===" docker exec "$CONTAINER" sh -c "getent hosts host.docker.internal && wget -qO- --timeout=5 http://host.docker.internal:$PORT/api/version" \ && echo "[OK] Container reached host model API successfully!" \ || echo "[FAIL] Container cannot reach host.docker.internal:$PORT. Ensure extra_hosts: ['host.docker.internal:host-gateway'] is set."
PARAMETER SPECIFICATION // 参数化变量规范说明表
「diagnose-container-llm.sh」可定制环境变量与默认值说明
本配置模板(SHELL 格式)支持 2 项运行时参数注入,所有替换均在本地浏览器内完成。
| 模板占位符 | 参数用途说明 | 安全默认值 | 填写示例 |
|---|---|---|---|
{{HOST_PORT}} | 宿主机模型服务端口 | 11434 | 11434 |
{{CONTAINER_NAME}} | 发起请求的容器名称 | tinker-open-webui | tinker-open-webui |
PAIRED HARDWARE MANIFEST // 配套实测环境与边界记录
配套指南《容器连不上宿主机模型:最小复现和诊断步骤》验证基线
实测硬件与操作系统 (Hardware & OS)
Ubuntu 24.04(Docker Engine 27.x + UFW 防火墙)与 macOS 15(Docker Desktop 4.36)双平台实测
锁定软件栈与模型版本 (Pinned Versions)
Docker Engine 27.xOllama 0.5.7Open WebUI v0.5.10n8n 1.76.x
离线与安全边界 (纯本机回环与容器网桥通信)
包含严格的网桥子网防火墙策略,在向本机容器放行 11434 的同时阻止外部网络访问。
已知限制与失败边界 (Known Limits)
- `network_mode: host` 虽然能在 Linux 下秒通,但在 macOS 和 Windows 的 Docker Desktop 下并不与宿主机共享网络栈(端口映射还会失效)。
- 在带有公网 IP 的云服务器上设置 `OLLAMA_HOST=0.0.0.0` 若不配防火墙,会导致 11434 端口直接暴露给全网扫描器。
DEPLOYMENT CHECKLIST // 配置落地核验步骤
部署 diagnose-container-llm.sh 后的 3 步验收清单
- 确认宿主机 11434 端口已监听在 `*:11434` 或网桥 IP 上(而非仅 `127.0.0.1`)。
- 已在客户端容器配置中添加 `extra_hosts: ["host.docker.internal:host-gateway"]`。
- 若启用了 Linux UFW 防火墙,已仅针对 `172.16.0.0/12` 私有网段放行 11434 端口。