问题描述
docker宿主机随机端口映射了docker容器,如何让docker容器知道宿主机的IP与映射端口呢?
问题出现的环境背景及自己尝试过哪些方法
本人使用springcloud+docker的结构搭建微服务,现在遇到的问题是:
docker宿主机使用-P命令随机端口绑定的docker指定端口(比如每个容器都暴露8080端口),
但是容器中无法知道宿主机的ip和映射端口,即eureka上的实例不知道暴露给外部的什么访问IP和端口(宿主机IP和宿主机port)。
请教各位大神,此问题该如何解决,谢谢!
【docker显示宿主机的随机端口32773映射了容器8080端口】
【Eureka显示是容器端口8080,而非宿主机映射端口】
你期待的结果是什么?实际看到的错误信息又是什么?
期待容器上能获得宿主机的Ip和映射该容器的端口。
eureka上显示的IP和端口都为宿主机的。
更新:
服务发现中心的端口还是映射到固定宿主机端口吧 怕被外部访问就用
-p 127.0.0.1:9090
来限制,至于 ip,不使用 docker-compose 这类编排方式的话可以让服务发现中心的容器使用--name
固定名称,其他微服务容器使用--link 服务发现中心的容器名:别名
来通过别名访问。application.yml 中服务发现中心的注册地址就不需要 IP 了直接用别名,docker 会帮你解析。eureka 为什么要知道自己的宿主机 IP 和端口?