docker宿主机随机端口映射了docker容器,如何让docker容器知道宿主机的IP与映射端口呢?
问题描述
docker宿主机随机端口映射了docker容器,如何让docker容器知道宿主机的IP与映射端口呢?
问题出现的环境背景及自己尝试过哪些方法
本人使用springcloud+docker的结构搭建微服务,现在遇到的问题是:
docker宿主机使用-P命令随机端口绑定的docker指定端口(比如每个容器都暴露8080端口),
但是容器中无法知道宿主机的ip和映射端口,即eureka上的实例不知道暴露给外部的什么访问IP和端口(宿主机IP和宿主机port)。
请教各位大神,此问题该如何解决,谢谢!
【docker显示宿主机的随机端口32773映射了容器8080端口】
【Eureka显示是容器端口8080,而非宿主机映射端口】
你期待的结果是什么?实际看到的错误信息又是什么?
期待容器上能获得宿主机的Ip和映射该容器的端口。
eureka上显示的IP和端口都为宿主机的。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
更新:
服务发现中心的端口还是映射到固定宿主机端口吧 怕被外部访问就用
-p 127.0.0.1:9090
来限制,至于 ip,不使用 docker-compose 这类编排方式的话可以让服务发现中心的容器使用--name
固定名称,其他微服务容器使用--link 服务发现中心的容器名:别名
来通过别名访问。application.yml 中服务发现中心的注册地址就不需要 IP 了直接用别名,docker 会帮你解析。eureka 为什么要知道自己的宿主机 IP 和端口?
docker的映射的问题,其实主要是配置的问题。
具体可以看看这篇。讲的比较清晰
https://kalasearch.cn/community/tutorials/how-to-share-data-between-the-docker-container-and-the-host/