问题是什么?
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
- 无响应*
其他软件
- 无响应*
3条答案
按热度按时间plicqrtu1#
它也在本地(非Docker)进行操作。只是tcp6...
s4chpxco2#
我也有同样的问题。
如果使用这个是一样的。
6ovsh4lw3#
我唯一的解决办法是在我的docker网络上启用ipv6,然后使用主机名在openweb和llama之间按计划工作。