无法在127.0.0.1:6379连接到Redis:在docker中拒绝连接

时间:2017-03-01 10:35:10

标签: docker redis

我使用的是redis-server:最新图片。我用“docker run -it --name =”redis2“redis:1 bash”命令进入容器内部。我看到默认情况下redis正在监听端口:6379。

Running in stand alone mode

Port: 6379

PID: 39

http://redis.io

[39] 01 Mar 09:03:45.669 # Server started, Redis version 2.8.4 [39] 01 Mar 09:03:45.669 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. 

要解决此问题,请将“vm.overcommit_memory = 1”添加到/etc/sysctl.conf,然后重新启动或运行命令“sysctl vm.overcommit_memory = 1”,以使其生效。 [39] 01 Mar 09:03:45.669 *服务器现已准备好接受端口6379上的连接

然后进一步没有回应。我试过“redis-cli ping”。没有回应。然后我点击“ctrl + c”并键入“redis-cli ping”并获得以下响应:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

我尝试通过执行以下命令将端口更改为6001:

redis-server --port 6003

我看到以下回复:

Running in stand alone mode

Port: 6003

PID: 47

我又尝试了“redis-cli ping”,它给我带来了同样的错误:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

我该如何解决这个问题?我还在“/etc/redis/redis.conf”位置更新了端口(新端口6003)。

谢谢

3 个答案:

答案 0 :(得分:5)

Redis正在侦听内部docker网络上的端口,要从本地计算机访问它,您需要使用-p 6379:6379将容器端口映射到本地端口。这样,如果您有多个redis容器,则可以将它们分别映射到计算机上的不同端口。

答案 1 :(得分:1)

好一阵子了,但是对于其他人来说,也面临着同样的问题。当您将“ sh”命令放入“ docker run”时,它将替换启动Redis服务器的默认命令。 因此,您可以在单独的终端(例如“ docker run redis”)中启动容器,而在另一个终端中运行“ docker exec -it #container_id sh” 这是在主进程中启动容器,然后将正在运行的shell附加到其上或按照Chris的建议将容器端口映射到本地端口的一种更常见的方法。

答案 2 :(得分:0)

如果您收到此错误:

Could not connect to Redis at 127.0.0.1:6379: Connection refused

您可能需要守护 redis-server 以便 docker 可以连接到它:

/usr/local/bin/redis-server --daemonize yes

然后再次尝试运行 redis-cli ping