Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to connect to a local Redis server from a Docker container?

Tags:

docker

redis

I'm trying to connect from inside a Docker container to a local Redis server on my machine. What I did so far:

  • Redis is up an running on my machine (can connect to it via redis-cli)
  • started an interactive Docker container (from the Ubuntu image)
  • installed "redis-tool" inside the container
  • tried to connect to Redis via redis-cli:
    > redis-cli -h 172.17.0.3 -p 6379
    (got the IP address via ifconfig inside the container)
  • got an error saying "connection refused"

What's the trick I'm not thinking of in order to get a working connection?

I already tried to set "bind 0.0.0.0" in my redis.conf but that had no effect. I also tried to forward the port 6379 to 6379 when running the container but I get an error saying the address is already in use.

Thanks in advance!

like image 624
kidman01 Avatar asked Nov 19 '17 11:11

kidman01


2 Answers

You should not connect to IP address of the container, but IP of the host (one you see on host for Docker bridge). Looking at your question it should be 172.17.0.1

like image 170
odk Avatar answered Sep 25 '22 15:09

odk


You can do this:

  • Get IP of your host machine, e.g. in an environment variable $host_ip
  • Run docker command like:
    docker run -it --add-host redis_server:$host_ip ubuntu bash
    

Now from inside container you will be able to reach Redis server via hostname redis_server running on your host machine.

like image 29
bpatel Avatar answered Sep 24 '22 15:09

bpatel