Redis
 sql >> Datenbank >  >> NoSQL >> Redis

Docker [Errno 111] Verbindungsaufruf fehlgeschlagen ('127.0.0.1', 6379)

Versuchen Sie, 127.0.0.1:6379 zu ändern zu redis:6379 .

Obwohl Redis ausgeführt wird, wird Ihr python Container kann nicht damit kommunizieren; Dies liegt daran, dass versucht wird, eine Verbindung zu 127.0.0.1:6379 herzustellen , aber aus Sicht des Containers läuft dort nichts. Das Debuggen kann etwas frustrierend sein, aber es ist etwas einfacher, wenn Sie bedenken, dass Container ihren eigenen Netzwerk-Namespace erhalten. Als Ergebnis python 's localhost !=redis 's localhost !=localhost Ihrer Host-Maschine .

Glücklicherweise ist es einfach, Container zu verbinden, die sich dieselbe Brücke teilen, und standardmäßig docker-compose erstellt ein einzelnes Bridge-Netzwerk und verbindet alle Ihre Container mit ihnen und stellt das notwendige DNS bereit, damit sie sich gegenseitig erkennen können. Daher funktioniert die Container-zu-Container-Kommunikation einfach über den Dienstnamen.

Als Hinweis:Es ist möglich, Container im selben Namespace und in ihnen im Namespace des Hosts über --net=container:<container-id> auszuführen oder --net=host Flagge. Dies ist besonders nützlich, um Debugging-Tools in einem Container auszuführen und sie an den Netzwerk-Namespace eines anderen Containers oder des Hosts anzuhängen, z. Verwenden von netshoot, um zu sehen, welche Ports innerhalb des Containers lauschen (offengelegt oder nicht), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn .