我有一个应用程序可以提取发出请求的客户端 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。不知道这是否与问题有关。
答案 0 :(得分:0)
如果您使用 net=host
配置,则不需要 -p <host>:<container>
设置,因为这仅在您使用桥接网络配置时用于端口转发。
只需删除此标志并浏览到您的应用程序侦听的任何端口。它应该可以工作。