Redis
 sql >> Database >  >> NoSQL >> Redis

Docker [Errno 111] Chiamata di connessione non riuscita ('127.0.0.1', 6379)

Prova a modificare 127.0.0.1:6379 a redis:6379 .

Sebbene Redis sia in esecuzione, il tuo python il contenitore non è in grado di comunicare con esso; questo perché sta tentando di connettersi a 127.0.0.1:6379 , ma dal punto di vista del contenitore, non c'è nulla in esecuzione lì. Questo può essere un po' frustrante per il debug, ma è un po' più semplice se tieni presente che i contenitori ottengono il proprio spazio dei nomi di rete. Di conseguenza, python 's localhost !=redis 's localhost !=localhost della tua macchina host .

Fortunatamente, è facile connettere contenitori che condividono lo stesso bridge e, per impostazione predefinita, docker-compose crea un'unica rete bridge e connette tutti i tuoi container ad essi, fornendo il DNS necessario per consentire loro di scoprirsi l'un l'altro. Di conseguenza, la comunicazione da contenitore a contenitore funziona semplicemente utilizzando il nome del servizio.

Come nota, è possibile eseguire contenitori nello stesso spazio dei nomi ed eseguirli in essi nello spazio dei nomi dell'host, tramite il --net=container:<container-id> o --net=host bandiera. Ciò è particolarmente utile per eseguire strumenti di debug in un container e collegarli allo spazio dei nomi di rete di un altro container o dell'host, ad es. usando netshoot per vedere quali porte sono in ascolto all'interno del container (esposte o meno), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn .