ollama Docker容器默认仅监听IPv6,

wbgh16ku  于 2个月前  发布在  Docker
关注(0)|答案(3)|浏览(90)

问题是什么?

Docker容器默认只监听IPv6。这导致同一堆栈中其他试图通过IPv4与ollama通信的容器连接失败。

您期望看到什么?

容器同时监听IPv4和IPv6。

重现步骤

部署ollama:

version: '3.3'
services:
    ollama:
      container_name: ollama
      volumes:
          - "/docker/ollama:/root/.ollama"
      restart: unless-stopped
      image: ollama/ollama:0.1.29
      deploy:
        resources:
          reservations:
            devices:
              - driver: nvidia
                count: all
                capabilities: [gpu]

验证端口11434仅在容器内部监听IPv6:

~$ docker exec -t -i ollama /bin/bash
root@28988fb7b322:/# apt update
[...]
root@28988fb7b322:/# apt install net-utils
[...]
root@28988fb7b322:/# netstat -nap | grep LISTEN
tcp        0      0 127.0.0.11:35687        0.0.0.0:*               LISTEN      -
tcp6       0      0 :::11434                :::*                    LISTEN      1/ollama

您可以通过将以下行添加到docker compose文件中解决此问题:

ports:
          - '127.0.0.1:11434:11434'

然而,这会导致问题,因为它将端口暴露给整个docker主机,这是不必要的。该端口只需要暴露给同一compose堆栈中的其他容器。

最近的更改是否引入了问题?

  • 无响应*

OS

Linux

架构

amd64

平台

Docker, WSL2

Ollama版本

0.1.29

GPU

Nvidia

GPU信息

  • 无响应*

CPU

  • 无响应*

其他软件

  • 无响应*
plicqrtu

plicqrtu1#

[cross@cross-pc ~]$ sudo netstat -tunlp | grep 11434
tcp6       0      0 :::11434                :::*                    LISTEN      565114/ollama

它也在本地(非Docker)进行操作。只是tcp6...

s4chpxco

s4chpxco2#

我也有同样的问题。

root@Bloomberg-AI-B760M:~# cat /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
Environment="OLLAMA_HOST=0.0.0.0:11434"
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

[Install]
WantedBy=default.target
root@Bloomberg-AI-B760M:~# netstat -antp | grep 11434
tcp6       0      0 :::11434

如果使用这个是一样的。

root@Bloomberg-AI-B760M:~# cat /etc/systemd/system/ollama.service
[Unit]
Description=Ollama Service
After=network-online.target

[Service]
Environment="OLLAMA_HOST=0.0.0.0"
ExecStart=/usr/local/bin/ollama serve
User=ollama
Group=ollama
Restart=always
RestartSec=3
Environment="PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin"

[Install]
WantedBy=default.target
root@Bloomberg-AI-B760M:~# netstat -antp | grep 11434
tcp6       0      0 :::11434                :::*                    LISTEN      10373/ollama        
tcp6       0      0 192.168.198.209:11434   192.168.198.206:37518   ESTABLISHED 10373/ollama
6ovsh4lw

6ovsh4lw3#

我唯一的解决办法是在我的docker网络上启用ipv6,然后使用主机名在openweb和llama之间按计划工作。

相关问题