TinkerLab
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}}宿主机模型服务端口1143411434
{{CONTAINER_NAME}}发起请求的容器名称tinker-open-webuitinker-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 步验收清单

  1. 确认宿主机 11434 端口已监听在 `*:11434` 或网桥 IP 上(而非仅 `127.0.0.1`)。
  2. 已在客户端容器配置中添加 `extra_hosts: ["host.docker.internal:host-gateway"]`。
  3. 若启用了 Linux UFW 防火墙,已仅针对 `172.16.0.0/12` 私有网段放行 11434 端口。