Probleme 127.0.0.1 in einer VM

rabab

New member
Hallo, ich bin ganz neu mit Docker und Linux, habe aber, dank dieses Forums, schon einiges gelernt in den letzten Tagen.
Jetzt komme ich wieder nicht weiter.
In einer Proxmox-VM habe ich Paperless-ngx, Paperless-ai und Ollama zusammen gesteckt und versuche nun noch, die zu verkuppeln.
Das Problem scheint das Sprachmodell zu sein. Das habe ich über das Terminal geladen, es will aber über 127.0.0.1:11434 angesprochen werden. Die Adresse gibt es in der VM natürlich nicht. Was muss ich tun, damit ich das über meine normale VM-IP ansprechen kann.
Sorry falls noch Infos fehlen, ich kann noch nicht beurteilen, was wichtig sein könnte.
 
Hi,

die Adresse gibt es in der VM schon, es ist der "localhost". Das Problem dürfte nur sein, dass jeder Container eine eigene IP aus einem anderen Netz bekommt, währen der Host selbst (also die Docker-VM in diesem Fall) in Deinem lokalen Netz ist. Auf dem Docker-Host bzw. der Docker-VM gibt es also intern nochmal andere Netze, welche die Container nutzen. Daher auch die Portweiterleitungen (xxxx:yyyy).

Ich kenne mich mit Deinem Konstrukt nun nicht aus, aber die Frage wäre erstmal: Welcher Container will da mit welchem reden?
Das habe ich über das Terminal geladen, es will aber über 127.0.0.1:11434 angesprochen werden.
Wenn alles zusammenhängt, sollte sich das Problem "theoretisch" über folgendes lösen lassen: <Ziel-Container-Name>:11434. Damit bleibt die Verbindung auch intern im Container-Netzwerk. Die Bezeichnungen sollten in der compose-Datei zu finden sein, oder Du schaust halt mal bei Portainer, da wird sich auch entsprechendes finden lassen.
 
Per default hat jeder Container seinen eigenen isolierten Netzwerk-Namespace. Der Host wiederum hat keine Netzwerk-Namespace isolation. Man könnte sagen: die Netzwerk-Interfaces haben über die Namespaces eine gespaltene Persönlichkeit, bei der keine Persönlichkeit etwas von der anderen weiss...

Sprich: Localhost eines Containers, ist ein anderes Localhost, als das eines anderen Contaieners oder des Hosts.

Der richtige Weg ist hier wie @blurrrr es beschreibt:
Die Container in ein gemeinsames, selbst erzeugtes Container-Bridge-Netzwerk stopfen (compose legt z.b immer eins an). Innerhalb eines selbst erzeugten Bridge-Netzwerks kann man dann das dns-basierte Service-Discovery verwenden, bei dem ein Container einen anderen Container über seinen Service-Namen (nur bei compose), Container-Namen, den Hostnamen des Containers, oder falls konfiguriert über den Netzwerk-Alias des Containers im Netzwerk ansprechen. Wichtig ist dabei dann den Container-Port zu verwenden.

Achtung: die default bridge verfügt nicht über dns-basierte Service-Discovery. Das geht nur bei selbst angelegten Bridge-Netzwerken (wie sie bswp. compose anlegt)

Den Container Port steht mindestens beim Port-Publishing: -p <host-port>:<container-port>. Damit wäre der Port hinter dem Doppeltpunkt der, der bei Container zu Container kommunikation zu verwenden ist.
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
6.677
Beiträge
64.053
Mitglieder
6.930
Neuestes Mitglied
raipu
Zurück
Oben