docker exec -it 4f redis-cli的时候报Could not connect to Redis at 127.0.0.1:6379: Connection refused

在 Docker 容器中执行 redis-cli 时出现 Connection refused 错误,通常是因为 Redis 服务没有在预期的 IP 地址或端口上运行。以下是几个常见的原因及解决方法:

1. 确认 Redis 服务是否在容器中运行

首先检查 Redis 服务在容器中是否已启动。

docker exec -it 4f ps aux | grep redis

如果 Redis 没有启动,可以尝试重启容器,或检查容器的 Redis 配置文件(通常是 /etc/redis/redis.conf)以确保服务可以启动。

2. 指定正确的主机和端口(笔者遇到的是这个问题,自己自定义了端口)

在容器内部,Redis 服务可能监听的是 localhost 或其他指定的 IP 地址。如果 Redis 监听的不是默认的 127.0.0.1 地址,可以通过以下方式指定连接地址:

docker exec -it 4f redis-cli -h 127.0.0.1 -p 6379

如果 Redis 监听的是 0.0.0.0(即所有网络接口),可以尝试:

docker exec -it 4f redis-cli -h 0.0.0.0 -p 6379

3. 检查 Redis 配置文件中的绑定配置

如果 Redis 配置文件 (/etc/redis/redis.conf) 中的 bind 配置为特定 IP 地址,比如 127.0.0.1,可能会导致连接问题。你可以调整 bind 为 0.0.0.0 以允许来自所有网络接口的连接。

# 编辑 redis.conf 文件并确认以下配置 bind 0.0.0.0

4. 检查 Redis 是否绑定了 Unix Socket

有时 Redis 会通过 Unix socket 而不是端口监听。可以使用以下命令检查 Redis 是否正在监听 socket:

docker exec -it 4f redis-cli -s /var/run/redis/redis.sock

5. 重启 Redis 服务

如果配置检查无误,但问题仍然存在,可以尝试重启 Redis:

docker exec -it 4f service redis-server restart

总结

确保 Redis 服务在容器中正常运行,并在预期的 IP 地址和端口上监听。

你可能感兴趣的:(docker,redis,容器)