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

Viewed 17946

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!

4 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

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.

Just use this command

"docker run --network=host -p port:port IMAGE"

Not only Redis, All your service you run at your localhost you need on docker you can use with this.

Use link between containers.
docker run -d --name=redis_xyz redis

docker run -it --link redis_xyz:redis_local redis_cli_image redis-cli -h redis_local

Related