Ollama连接不上Docker中的应用

一、问题核心

Windows系统 的Docker容器中,若尝试通过 http://localhost:11434 连接宿主机运行的Ollama服务,会因 容器与宿主机的网络隔离 导致连接失败(报错如 Connection refused)。


二、解决方案(纯Windows环境)

方法1:使用 host.docker.internal 替代 localhost

Docker Desktop for Windows 提供了特殊DNS名称 host.docker.internal,专用于容器内访问宿主机服务。
操作步骤
将项目中的连接地址从:

http://localhost:11434

修改为:

http://host.docker.internal:11434

此方法适用于 Windows 10/11 的 Docker Desktop 环境 。


方法2:验证基础网络与Ollama状态

  1. 宿主机检查Ollama是否运行
    在 PowerShell 中执行:

    curl http://localhost:11434
    

    若返回错误,需重启Ollama服务。

  2. 容器内测试连接
    进入容器命令行执行:

    curl http://host.docker.internal:11434
    

    若失败,进入下一步排查。


方法3:处理Windows防火墙限制

Windows防火墙可能阻止容器访问宿主机端口,需手动开放规则:

  1. 打开 控制面板 > Windows Defender 防火墙 > 高级设置
  2. 入站规则 中新建规则,选择 端口,指定 11434 端口并允许连接 。

方法4:清理异常容器与网络冲突

  1. 删除异常容器
    报错 Connection refused 时,可能是容器网络缓存异常,执行:

    docker rm -f <container_name>
    docker-compose down && docker-compose up -d
    

    重新创建容器可解决临时网络状态问题。

  2. 自定义Docker网络(高级)
    若多容器需互通,创建自定义网络:

    docker network create my_network
    docker run --network my_network -d -p 11434:11434 ollama
    

    容器间可通过服务名直接访问。


三、验证是否解决

  1. 容器内再次测试

    curl http://host.docker.internal:11434/api/tags
    

    成功返回模型列表则问题解决。

  2. 查看日志辅助排查

    • 宿主机Ollama日志:通过任务管理器查看Ollama进程日志。
    • 容器日志:docker logs <container_name>

四、总结与避坑指南

  • 核心要点
    • Windows环境必须使用 host.docker.internal 而非 localhost
    • 确保 Docker Desktop 已启用,并且防火墙开放对应端口。
  • 常见错误
    • 使用 WSL2 时需额外配置,但纯 Windows Docker Desktop 环境无需操作。
    • 防火墙未开放 11434 端口导致连接失败。

互动提问:你在 Windows Docker 中是否遇到过其他网络问题?欢迎留言讨论!点赞+收藏本文,解锁更多容器化实战技巧!

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐