[英]Why does InetAddress.getLocalHost().getHostName() return a value different from bash “hostname”?
[英]how to return “localhost” from InetAddress.getLocalHost().getHostName() in docker container
在我的Docker容器(Java应用程序)中,对InetAddress.getLocalHost().getHostName()
的调用返回的名称与我们在InetAddress.getLocalHost().getHostName()
docker run --name 'myserver'
给出的名称相同。
有没有办法让InetAddress.getLocalHost().getHostName()
在InetAddress.getLocalHost().getHostName()
容器内的Java代码中返回“ localhost”?
我在Docker容器中的/ etc / hosts看起来像这样: 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback <snip> 172.17.0.5 myserver
让我们使用此示例代码来验证相同的代码...
import java.net.InetAddress;
import java.net.UnknownHostException;
public class Util {
public static String getHostName() {
String hostName = "";
try {
InetAddress inetAddress = InetAddress.getLocalHost();
hostName = inetAddress.getHostName();
} catch (UnknownHostException e) {
}
return hostName;
}
public static void main(String[] args) {
System.out.println(getHostName());
}
}
假设您正在以Box名称BOX1
运行docker容器
和docker containerId = 164f1347533a ...
这将打印164f1347533a
作为主机名。
要获取BOX1
,您必须在启动命令中传递--hostname = BOX1。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.