redisdockerboot2dockerdockerfiledocker-compose

Redis Docker connection refused


I just built the redis docker instance

$ docker pull redis

After which I ran it like this.

$ docker run --name=redis --detach=true --publish=6379:6379 redis

I get the following

$ docker ps 
key        redis   "/sbin/entrypoint.sh"    22 minutes ago      Up 22 minutes       0.0.0.0:6379->6379/tcp   redis

To me the above means that it is now running listening on port 6379 on localhost or 127.0.0.1 or 0.0.0.0.

But to my great surprise, when I try to connect is responds with connection refused.

Please can someone throw some light.


Solution

  • You need to provide more information about your environment (OS, Docker installation, etc), but basically, if you start your Redis container like this:

    docker run --name=redis-devel --publish=6379:6379 --hostname=redis --restart=on-failure --detach redis:latest
    

    It should expose the port no matter what. The only reason you might not be able to connect to it, is if you've messed up your bridge interface, if you're on Linux, or you're using a docker machine with its own network interface and IP address and you're not connecting to that IP address. If you're using Docker for Mac, then that only supports routing to the localhost address, since bridging on Mac hosts doesn't work yet.

    Anyway, on MacOS with Docker for Mac (not the old Docker Toolbox), the following should be enough to get your started:

    ➜  ~ docker run --name=redis-devel --publish=6379:6379 --hostname=redis --restart=on-failure --detach redis:latest
    6bfc6250cc505f82b56a405c44791f193ec5b53469f1625b289ef8a5d7d3b61e
    ➜  ~ docker ps
    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                    NAMES
    6bfc6250cc50        redis:latest        "docker-entrypoint.s…"   10 minutes ago      Up 10 minutes       0.0.0.0:6379->6379/tcp   redis-devel
    ➜  ~ redis-cli ping
    PONG
    ➜  ~