部分内容参考自:使得 docker 容器内部可以访问宿主机的 ollama 服务_docker 访问 ollama-CSDN 博客,补充添加了更多的细节,也补充了一个更加简单的方案。
我测试的系统版本:Ubuntu 24.04.2 LTS noble,查看方式是指令 lsb_release -a

有时,我们会通过 docker run 或者 docker compose 来起一个服务,这个服务起在了 docker 容器内部,如果想让这个服务来访问宿主机的 ollama 服务,从而使用本地的大模型,需要如下:

一、配置 ollama 服务监听 0.0.0.0

默认的 ollama 服务只监听 127.0.0.1:11434,docker 容器内部是无法访问到这个的(哪怕通过访问主机 ip:11434 也不可以)

1. 编辑 systemd 服务文件

打开 Ollama 的 systemd 服务配置文件:

sudo vim /etc/systemd/system/ollama.service

[Service] 部分添加监听地址的环境变量

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434" # 设置监听所有网络接口

如果你的 Environment 已经有内容了,可以用逗号分隔,如下:
在这里插入图片描述

2. 重启服务使配置生效

sudo systemctl daemon-reload # 重新加载服务配置
sudo systemctl restart ollama # 重启服务
sudo systemctl status ollama # 检查服务状态是否正常

不出意外的话可以看到Listening on [::]:11434
在这里插入图片描述

3. 验证监听地址

运行以下命令,检查 Ollama 是否已监听 0.0.0.0:11434

netstat -tuln | grep 11434 # 输出应为 ":::11434"

二、在启动服务时,要添加内部端口映射

添加端口映射有两种方案,两种方案都挺简单的,大家可以参考一下:

1. 172.17.0.1

这种方式你的 docker 运行指令和 docker_compose.yml 文件都不用变,访问主机上的服务用http://172.17.0.1:端口号就可以了,比如 ollama 可以用http://172.17.0.1:11434,这是 docker 自带的网桥。

你可以直接通过指定 url 为:https://172.17.0.1:11434 来访问宿主机的 ollama 服务。

验证方式可以是:

sudo apt install curl
curl https://172.17.0.1:11434

正常情况会输出Ollama is running

2. host.docker.internal

如果使用 docker run 启动,则需要

docker run --add-host=host.docker.internal:host-gateway -d your-app-image

如果使用 docker compose 启动,则docker_compose.yml中应该有如下代码(仅供参考):

version: '3'
services:
  your-app:
    image: your-app-image
    environment:
      OLLAMA_API_URL: http://host.docker.internal:11434
    extra_hosts:
      - "host.docker.internal:host-gateway"  # Linux 需 Docker 20.10+支持

并且你可以通过先切换到 docker_compose.yml 的目录,再运行docker build -t your-app .的方式去创建 docker。然后再通过sudo docker run -itd --name "你的 docker 容器的名字" "your-app" /bin/bash的方式去运行 docker 容器。

也可以通过“docker-compose up -d”的方式去运行。

如果你发现 image 拉取不下来,可以看一下我的博客:【记录】Docker|Docker 镜像拉取超时的问题、推荐的解决办法及安全校验(以拉取 Ubuntu24.04 为例)_docker 拉取 ubuntu 超时-CSDN 博客

这样,你便可以通过指定 url 为:https://host.docker.internal:/11434/v1 来访问宿主机的 ollama 服务。

本账号所有文章均为原创,欢迎转载,请注明文章出处:https://shandianchengzi.blog.csdn.net/article/details/151398449。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐