Docker容器连接本地Redis数据库失败问题求助
Docker容器连接本地Redis失败的解决办法
错误原因
你代码里写的host='localhost',在Docker容器里指的是容器自己的内部网络环境,不是你运行Docker的电脑(也就是宿主机)。所以容器里的Python程序找不到宿主机上的Redis服务,就会抛出连接错误。
解决方案(二选一即可)
方案1:改用宿主机IP连接
- 找到宿主机的本地IP:
- Linux/macOS终端执行
ifconfig,Windows命令行执行ipconfig,找到类似192.168.1.100这类的私有IP地址。
- Linux/macOS终端执行
- 修改Python连接代码的
host为这个IP:
redis = redis.Redis( host='192.168.1.100', # 替换成你的宿主机实际IP port=6379, charset="utf-8", decode_responses=True)
- 重新构建镜像并运行:
sudo docker build -t scraper . sudo docker run scraper
注意:要确保Redis允许外部IP访问——打开Redis配置文件redis.conf,把bind项改成bind 0.0.0.0(允许所有IP访问),或者加上你的宿主机IP,然后重启Redis服务。
方案2:用宿主网络模式运行容器
这种方法不用修改代码,直接让容器共享宿主机的网络:
运行容器时添加--net=host参数:
sudo docker run --net=host scraper
这样容器里的localhost就等同于宿主机的localhost,代码不用改就能正常连接Redis。
内容的提问来源于stack exchange,提问作者Sid
相关产品推荐
相关产品推荐

