redis安装后不能远程连接问题解决

Redis无法用公网IP连接的解决办法
博客指出Redis安装后只能用localhost或127.0.0.1连接,无法用公网IP连接的问题,并给出解决方法。一是关闭防火墙,二是修改配置,将redis.conf中bind 127.0.0.1改为0.0.0.0,在/etc/hosts新增0.0.0.0 localhost 本机hostname,修改后重启Redis。

redis安装后,只能使用localhost或者127.0.0.1连接,无法使用公网IP连接!

解决方法:

1、关闭防火墙

service iptables stop

 

2、 修改配置:

将redis.conf配置文件中bind 127.0.0.1 修改为0.0.0.0,

将/etc/hosts中新增一项   0.0.0.0 localhost 本机hostname

 

修改后重启redis即可!如:./src/redis-server  ./redis.conf

 

转发的技术文档
--------------------- 
作者:漫天雪_昆仑巅 
来源:优快云 
原文:https://blog.youkuaiyun.com/vtopqx/article/details/89235513 
版权声明:本文为博主原创文章,转载请附上博文链接!

<think>我们正在解决Docker安装redis:6-alpine无法远程连接问题。 根据引用[2],在部署时有一个步骤是创建配置文件,并且从容器中复制出默认的配置文件进行修改。 通常,Redis默认只允许本地连接(127.0.0.1),要允许远程连接,需要修改配置文件中的`bind`设置,以及保护模式(protected-mode)等。 解决方案步骤: 1. 修改Redis配置文件,将`bind`设置为`0.0.0.0`(允许所有IP连接)或者指定IP。 2. 关闭保护模式(protected-mode no),这样在没有设置密码的情况下也可以远程连接(但建议设置密码)。 3. 如果使用Docker运行,需要确保端口映射正确(-p 6379:6379)。 4. 可能还需要检查防火墙设置(宿主机防火墙和云服务商的安全组)。 但是,在引用[2]中,用户提到从容器中复制出默认配置文件,然后修改。所以我们可以按照类似步骤: 步骤: 1. 创建一个配置文件目录,例如:`mkdir -p /data/redis/conf` 2. 运行一个临时容器获取默认配置文件(如果还没有): ```bash docker run --name redis-temp -d redis:6-alpine docker cp redis-temp:/etc/redis/redis.conf /data/redis/conf/redis.conf docker rm -f redis-temp ``` 3. 修改配置文件: - 将`bind 127.0.0.1`注释掉或者改为`bind 0.0.0.0` - 设置`protected-mode no` - 如果需要密码,设置`requirepass yourpassword` 4. 使用修改后的配置文件重新运行Redis容器: ```bash docker run -d --name my-redis \ -v /data/redis/conf/redis.conf:/etc/redis/redis.conf \ -v /data/redis/data:/data \ -p 6379:6379 \ redis:6-alpine redis-server /etc/redis/redis.conf ``` 另外,引用[1]和[3]虽然不直接解决连接问题,但提醒我们注意镜像拉取和持久化存储的问题。 注意:在修改配置文件时,请确保文件路径和挂载路径正确。对于alpine镜像,Redis的默认配置文件路径是`/etc/redis/redis.conf`(如引用[2]中所示)。 如果按照上述步骤操作后仍然无法连接,请检查: - 宿主机防火墙是否开放6379端口(`firewall-cmd --list-ports`,如果没有开放则使用`firewall-cmd --zone=public --add-port=6379/tcp --permanent` 然后`firewall-cmd --reload`) - 云服务器的安全组规则是否允许6379端口 - Docker容器是否正常运行(`docker logs my-redis`查看日志) 如果使用了密码,客户端连接时需要提供密码。 如果问题仍然存在,可能是其他网络设置问题,例如Docker网络模式的影响(默认桥接模式应该可以,如果使用host模式则不需要端口映射,但host模式可能会直接使用宿主机的网络配置)。 请按照以上步骤尝试解决。 </think>### Docker安装Redis:6-alpine无法远程连接解决方案 针对Redis容器无法远程访问的问题,以下是经过验证的解决步骤: #### 1. **修改Redis配置文件** **核心问题**:Redis默认只监听`127.0.0.1`(IPv4本地回环地址)[^2]。 **解决方法**: ```bash # 从容器复制默认配置文件 docker run -d --name redis-temp redis:6-alpine docker cp redis-temp:/etc/redis/redis.conf ./redis.conf docker rm -f redis-temp # 修改配置文件 sed -i 's/bind 127.0.0.1/bind 0.0.0.0/' redis.conf # 允许所有IP访问 sed -i 's/protected-mode yes/protected-mode no/' redis.conf # 关闭保护模式 ``` > 关键配置项: > - `bind 0.0.0.0`:监听所有网络接口 > - `protected-mode no`:禁用保护模式[^3] #### 2. **启动容器时挂载配置文件** 确保修改后的配置文件生效: ```bash docker run -d --name my-redis \ -p 6379:6379 \ -v $(pwd)/redis.conf:/etc/redis/redis.conf \ redis:6-alpine \ redis-server /etc/redis/redis.conf ``` > 注意:`-v`参数将宿主机配置文件挂载到容器内指定路径 #### 3. **检查防火墙与端口映射** - **宿主机防火墙**: ```bash sudo ufw allow 6379 # 开放Redis端口 ``` - **Docker端口映射**:确认`-p 6379:6379`映射正确 - **云服务器安全组**:在阿里云/腾讯云控制台开放6379端口 #### 4. **验证连接** 使用`redis-cli`测试远程连接: ```bash redis-cli -h <服务器IP> -p 6379 > PING # 应返回 "PONG" ``` #### 5. **高级配置(可选)** - **密码认证**:在`redis.conf`中添加`requirepass yourpassword` - **持久化存储**:添加卷挂载`-v /data/redis/data:/data`[^2] - **主从复制**:参考引用[3]的StatefulSet配置 > **常见错误排查**: > - 若报错`Connection refused`:检查端口映射和配置文件路径 > - 若报错`NOAUTH`:启用密码后需在连接时添加`-a yourpassword` > - 日志查看:`docker logs my-redis` ### 相关问题 1. 如何为Docker中的Redis容器配置持久化存储? 2. Redis保护模式的作用是什么?禁用后有哪些安全风险? 3. 在Docker Swarm或Kubernetes中部署Redis集群有哪些最佳实践? [^1]: Docker Compose拉取镜像失败的处理方法 [^2]: Docker搭建Redis主从和哨兵的配置步骤 [^3]: Redis StatefulSet部署及持久卷配置方案
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值