解决docker容器内无法连接宿主redis
2024-01-08 18:37:56
背景 小程序的发短信服务挂了,随查看日志,该报错日志如下
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
文章来源:https://blog.csdn.net/SuperBetterMan/article/details/135396432
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!