docker容器内访问宿主机127.0.0.1服务
docker容器内访问宿主机127.0.0.1服务
点击上方”技术生活“,选择“设为星标”
做积极的人,而不是积极废人
-
背景
-
原因分析
-
解决方案
背景
已经通过docker启动的elasticsearch 服务,监听端口9200。在宿主机中直接通过http://127.0.0.1:9200 可以直接访问,但是通过docker访问缺不行,访问url:http://127.0.0.1:9200 或者http://localhost:9200
原因分析
docker是一个虚拟环境,127.0.0.1和localhost指的是虚拟环境内部,而不是外部宿主机,所以无法这样访问.
解决方案
1、 对于mac和windows,可以使用host.docker.internal替换127.0.0.1,如http://host.docker.internal:9200 (亲测好使)
2、对于Linux可以采用如下方案
创建一个桥接网络
下面的localNet是网络名字,可自行修改;关于192.168.0.0这个子网,也可以自行定义.
默认按照下面的命令,执行后将可以通过192.168.0.1访问宿主机.
docker network create -d bridge --subnet 192.168.0.0/24 --gateway 192.168.0.1 localNet
使用192.168.0.1替换127.0.0.1,如http://192.168.0.1:9200
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2019-09-09 springboot 配置读取环境变量,如果不存在设置默认值
2017-09-09 IE9版本以下ajax 跨域问题解决
2017-09-09 POJO与PO、VO的区别