You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

本地Ollama+Llama3在Colab本地运行时连接失败求助

问题分析与解决方案

错误ConnectError: [Errno 111] Connection refused的核心原因是:Docker部署的Colab运行时处于隔离的网络环境中,无法直接访问宿主机上默认仅监听127.0.0.1的Ollama服务。

解决步骤

1. 让Ollama允许外部访问

Ollama默认只绑定127.0.0.1,仅允许宿主机本地访问。需要修改其监听地址为0.0.0.0,允许所有网络接口访问:

  • 临时生效:重启Ollama时指定环境变量
    OLLAMA_HOST=0.0.0.0 ollama serve
    
  • 永久生效(以Linux systemd服务为例):
    编辑Ollama的systemd配置文件(通常在/etc/systemd/system/ollama.service.d/environment.conf),添加:
    [Service]
    Environment="OLLAMA_HOST=0.0.0.0"
    
    然后重载配置并重启服务:
    sudo systemctl daemon-reload
    sudo systemctl restart ollama
    

2. 让Colab容器能访问宿主机的Ollama

有两种可选方案:

方案A:使用Docker Host网络模式启动Colab运行时

这种模式下,容器与宿主机共享网络栈,容器内的127.0.0.1直接指向宿主机,无需额外配置:

sudo docker run --network host us-docker.pkg.dev/colab-images/public/runtime

启动后,Colab代码无需修改,直接调用Ollama即可。

方案B:保持原有端口映射,在代码中指定宿主机IP

如果不想用Host网络,需要在代码中指定宿主机的实际IP(或Docker提供的内部域名host.docker.internal):

import ollama
# 设置Ollama服务地址为宿主机IP(替换成你的宿主机局域网IP,比如192.168.1.100)
ollama.set_host('http://host.docker.internal:11434')

MODEL = 'llama3'

def llm_response(content):
    response = ollama.chat(
        model=MODEL,
        messages=[{"role": "user", "content": content}]
    )
    return response["message"]["content"]

注意:host.docker.internal在Windows/macOS Docker中默认可用,Linux Docker需要添加--add-host=host.docker.internal:host-gateway参数启动容器:

sudo docker run -p 127.0.0.1:9000:8080 --add-host=host.docker.internal:host-gateway us-docker.pkg.dev/colab-images/public/runtime

验证

完成上述配置后,在Colab中运行简化代码测试:

import ollama
ollama.chat(model='llama3', messages=[{"role": "user", "content": "The cat sat on the mat"}])

内容的提问来源于stack exchange,提问作者disruptive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 22:49:53