繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM