解决docker容器内无法连接宿主redis

背景 小程序的发短信服务挂了,随查看日志,该报错日志如下

在这里插入图片描述
Error 111 connecting to 127.0.0.1:6379. Connection refused.
6379是监听redis服务的端口,那大概是redis出错了。
首先查看了redis是否正常启动,检查出服务正常。
由于小程序是部署在docker内,而redis是安装在宿主主机内。
于是简单写了个demo测试是否能连接redis

import redis

try:
    # 创建Redis连接
    r = redis.Redis(host='127.0.0.1', port=6379)

    # 测试连接
    response = r.ping()
    if response:
        print("成功连接到Redis服务器")
    else:
        print("无法连接到Redis服务器")

except redis.exceptions.ConnectionError as e:
    print("连接错误:", str(e))

结果显示,在容器外可以正常连接redis,但是在容器内无法连接容器
这个原因大概是我们可以简单把docker当作是一个虚拟机,容器内外是两套系统。
那知道了原因,解决起来就比较迅速了。
首先,找到docker的虚拟IP
通过命令ifconfig
在这里插入图片描述
把这个虚拟IP加入到redis配置中
找到redis.config
然后修改如下地方
找到bind 127.0.0.1这一行,修改如下

bind 127.0.0.1 172.17.0.1

修改保护模式
protected-mode 设置为no
这个保护模式可能会不生效,报错结果如下
在这里插入图片描述
那么则进入redis中修改保护模式,把保护模式设置为No即可
在这里插入图片描述

另连接redis时,需要用docker的虚拟IP

最近更新

  1. TCP协议是安全的吗?

    2024-01-05 18:22:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-01-05 18:22:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-01-05 18:22:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-01-05 18:22:02       20 阅读

热门阅读

  1. React16源码: Hooks源码实现

    2024-01-05 18:22:02       36 阅读
  2. GreatSQL社区2023全年技术文章总结

    2024-01-05 18:22:02       45 阅读
  3. 7-24 约分最简分式 分数 15

    2024-01-05 18:22:02       33 阅读
  4. centos6后台启动docker

    2024-01-05 18:22:02       32 阅读
  5. 2401vim,vim重要修改更新大全

    2024-01-05 18:22:02       25 阅读
  6. 用RC2CryptoServiceProvider来加密解密

    2024-01-05 18:22:02       41 阅读
  7. 常用材料五行数据库超全汇总

    2024-01-05 18:22:02       30 阅读
  8. 【LeetCode】1321. 餐馆营业额变化增长

    2024-01-05 18:22:02       33 阅读