如何从Docker容器中的InetAddress.getLocalHost()。getHostName()返回“ localhost”

时间:2018-09-14 22:22:35

标签: java docker dns localhost containers

在我的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

1 个答案:

答案 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容器

和docker containerId = 164f1347533a ...

这将打印164f1347533a作为主机名。

要获取BOX1,必须在启动命令中传递--hostname = BOX1。