在我的Docker容器(Java应用程序)中,对InetAddress.getLocalHost().getHostName()
的调用返回的名称与我们在docker run --name 'myserver'
中给出的名称相同。
是否有一种方法可以让InetAddress.getLocalHost().getHostName()
在docker容器内的Java代码中返回“ localhost”?
我在docker容器中的/ etc / hosts看起来像这样:
127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
<snip>
172.17.0.5 myserver
答案 0 :(得分:1)
让我们使用此示例代码来验证相同的内容...
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 containerId = 164f1347533a ...
这将打印164f1347533a
作为主机名。
要获取BOX1
,必须在启动命令中传递--hostname = BOX1。