Как вернуть "localhost" из InetAddress.getLocalHost (). getHostName () в контейнере Docker - PullRequest
0 голосов
/ 15 сентября 2018

В моем Docker-контейнере (Java-приложении) вызов InetAddress.getLocalHost().getHostName() возвращает то же имя, которое мы дали в docker run --name 'myserver'.

Есть ли способ позволить InetAddress.getLocalHost().getHostName() вернуть "localhost" в коде Java внутри контейнера докера?

Мои / etc / hosts в контейнере Docker выглядят так: 127.0.0.1 localhost ::1 localhost ip6-localhost ip6-loopback <snip> 172.17.0.5 myserver

1 Ответ

0 голосов
/ 22 марта 2019

Давайте использовать этот пример кода для проверки того же ...

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в команде запуска.

...