[英]How to get System IP from a Dot net Core application running inside a Docker container
我在 AWS 云中使用 Docker 部署了一个 .NET Core 3.1 应用程序。 我尝试通过多种方式获取系统 IP(不是 Docker 容器 IP),但我一直得到 Docker 容器 IP。
有什么方法可以让 Docker 容器正在运行的系统 IP?
Environment.MachineName();
private string LocalIPAddress()
{
IPHostEntry host;
string localIP = "";
host = Dns.GetHostEntry(Dns.GetHostName());
foreach (IPAddress ip in host.AddressList)
{
Console.WriteLine(ip.ToString());
if (ip.AddressFamily == AddressFamily.InterNetwork)
localIP = ip.ToString();
}
//return localIP;
return host.HostName + ", " + Environment.MachineName;
}
容器中的应用程序无法自动确定“系统 ip”。
虽然有些流程可能有效(例如向https://icanhazip.com 之类的外部服务发出请求以查找您的“外部可见”地址),但这些流程通常会产生无用的答案:
容器化服务了解主机的唯一可靠方法是 (a) 在 host.network 命名空间中运行应用程序 ( docker run -.net=host
) 或 (b) 将信息作为环境传递变量( docker run -e MY_SYSTEM_IP=1.2.3.4...
)或某种配置文件等。
(如果您的目标只是连接到主机上运行的服务——我认为这不是您要问的——您确实有几个选项,具体取决于您是否在 Linux 下运行,或 MacOS/Windows。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.