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

Raj*_*aji 3 redis docker

我使用的是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. 
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请将"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
Run Code Online (Sandbox Code Playgroud)

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

redis-server --port 6003
Run Code Online (Sandbox Code Playgroud)

我看到以下回复:

Running in stand alone mode

Port: 6003

PID: 47
Run Code Online (Sandbox Code Playgroud)

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

Could not connect to Redis at 127.0.0.1:6379: Connection refused
Run Code Online (Sandbox Code Playgroud)

我该如何解决?此外,我已在"/etc/redis/redis.conf"位置更新了端口(新端口6003).

谢谢

Chr*_*ner 7

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


小智 6

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


use*_*160 6

如果您收到此错误:

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