在 Docker 容器中执行 redis-cli 时出现 Connection refused 错误,通常是因为 Redis 服务没有在预期的 IP 地址或端口上运行。以下是几个常见的原因及解决方法:
首先检查 Redis 服务在容器中是否已启动。
docker exec -it 4f ps aux | grep redis
如果 Redis 没有启动,可以尝试重启容器,或检查容器的 Redis 配置文件(通常是 /etc/redis/redis.conf)以确保服务可以启动。
在容器内部,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
如果 Redis 配置文件 (/etc/redis/redis.conf) 中的 bind 配置为特定 IP 地址,比如 127.0.0.1,可能会导致连接问题。你可以调整 bind 为 0.0.0.0 以允许来自所有网络接口的连接。
# 编辑 redis.conf 文件并确认以下配置 bind 0.0.0.0
有时 Redis 会通过 Unix socket 而不是端口监听。可以使用以下命令检查 Redis 是否正在监听 socket:
docker exec -it 4f redis-cli -s /var/run/redis/redis.sock
如果配置检查无误,但问题仍然存在,可以尝试重启 Redis:
docker exec -it 4f service redis-server restart
确保 Redis 服务在容器中正常运行,并在预期的 IP 地址和端口上监听。