如何从 docker 容器中运行的 Web 服务中获取客户端 IP?

时间:2021-04-01 06:58:33

标签: docker

我有一个应用程序可以提取发出请求的客户端 IP。当我直接在服务器上运行应用程序时,它可以工作并且我可以获得 IP。

但是当我在包含通过执行此命令的 docker 中运行它时:

docker run --rm -d -p 4300:4300 image

突然报告的客户端 IP 现在变成了 172.17.0.1

谷歌搜索我看到建议传入 --net=host 但这样做:

 docker run --rm --net=host -p 4300:4300 image

现在导致应用程序无法访问。由于某种奇怪的原因,该应用程序在指定的端口上似乎不再可用。

即使我删除 -p 4300:4300 这也不起作用,因为我在控制台中收到一条消息,说使用 --net=host 时不需要它。即:

 docker run --rm --net=host -p image

关于如何完成这项工作的任何建议?那是如何从 docker 容器中运行的 Web 服务中获取客户端 IP?我在 Mac 上运行 docker。不知道这是否与问题有关。

1 个答案:

答案 0 :(得分:0)

如果您使用 net=host 配置,则不需要 -p <host>:<container> 设置,因为这仅在您使用桥接网络配置时用于端口转发。 只需删除此标志并浏览到您的应用程序侦听的任何端口。它应该可以工作。