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和端口都为宿主机的。

阅读 6.9k
2 个回答

更新:

服务发现中心的端口还是映射到固定宿主机端口吧 怕被外部访问就用 -p 127.0.0.1:9090 来限制,至于 ip,不使用 docker-compose 这类编排方式的话可以让服务发现中心的容器使用 --name 固定名称,其他微服务容器使用 --link 服务发现中心的容器名:别名 来通过别名访问。application.yml 中服务发现中心的注册地址就不需要 IP 了直接用别名,docker 会帮你解析。


eureka 为什么要知道自己的宿主机 IP 和端口?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题