sql >> Base de Datos >  >> NoSQL >> Redis

Docker [Errno 111] Falló la llamada de conexión ('127.0.0.1', 6379)

Intenta cambiar 127.0.0.1:6379 a redis:6379 .

Aunque Redis se está ejecutando, su python el contenedor no puede comunicarse con él; esto se debe a que está intentando conectarse a 127.0.0.1:6379 , pero desde la perspectiva del contenedor, no hay nada ejecutándose allí. Esto puede ser un poco frustrante de depurar, pero es un poco más fácil si tiene en cuenta que los contenedores obtienen su propio espacio de nombres de red. Como resultado, python host local de !=redis 's localhost !=localhost de su máquina host .

Afortunadamente, es fácil conectar contenedores que comparten el mismo puente y, de forma predeterminada, docker-compose crea una red de puente único y conecta todos sus contenedores a ellos, proporcionando el DNS necesario para que puedan descubrirse entre sí. Como resultado, la comunicación de contenedor a contenedor funciona simplemente usando el nombre del servicio.

Como nota, es posible ejecutar contenedores en el mismo espacio de nombres y ejecutarlos en el espacio de nombres del host, a través de --net=container:<container-id> o --net=host bandera. Esto es especialmente útil para ejecutar herramientas de depuración en un contenedor y adjuntarlas al espacio de nombres de red de otro contenedor o del host, p. usando netshoot para ver qué puertos están escuchando dentro del contenedor (expuestos o no), docker run --rm -it --net container:test_web_1 nicolaka/netshoot netstat -tulpn .