Docker容器中Jedis连接失败:无法解析DNS主机求助
解决Docker容器内Jedis无法连接Redis的问题
针对你遇到的Failed to connect to any host resolved for DNS name异常,按以下步骤排查解决:
1. 检查Redis的网络绑定配置
Redis默认仅绑定127.0.0.1,导致容器无法访问。修改redis.conf:
- 注释掉
bind 127.0.0.1行,或改为bind 0.0.0.0(允许所有IP访问) - 将
protected-mode设置为no(生产环境需配合密码认证保障安全)
修改后重启Redis服务。
2. 使用Docker Host网络模式运行容器
启动容器时指定--network host,让容器直接复用宿主机网络栈,此时容器内可直接用localhost或宿主机IP访问Redis:
docker run --network host your-image-tag
3. 改用Docker内置宿主机别名
Docker为容器提供了宿主机的默认别名host.docker.internal(Linux/Windows/Mac均支持),修改Dockerfile的CMD指令:
CMD ["java", "-jar","app.jar","host.docker.internal","6379"]
重新构建镜像并运行容器即可。
4. 验证宿主机防火墙规则
确保宿主机的6379端口对外开放,允许Docker容器所在的网络段访问。以Linux为例:
ufw allow 6379
验证步骤
- 在宿主机执行
redis-cli -h <你的IP> -p 6379,确认Redis服务正常可访问 - 进入容器内部,执行
telnet host.docker.internal 6379或redis-cli测试网络连通性
内容的提问来源于stack exchange,提问作者vincent_01
相关产品推荐
相关产品推荐

