Получение Docker Host IP через NodeJS - PullRequest
0 голосов
/ 02 ноября 2018

Я пишу приложение NodeJS, в котором я пытаюсь получить IP хоста докера из контейнера докера; Кажется, что используемые мной API-интерфейсы узла получают IP-адрес контейнера Docker.

Первый метод, который я использую API OS:

require('dns').lookup(require('os').hostname(), function (err, add, fam) {
  console.log("os.gethostname API reports as: " +add);
})

os.gethostname API сообщает как: 172.17.0.2

Я тоже пытался

getDockerHost = require('get-docker-host');
isInDocker = require('is-in-docker');

checkDocker = () => {
    return new Promise((resolve, reject) => {
        if (isInDocker()) {
            getDockerHost((error, result) => {
                if (result) {
                    resolve(result);
                } else {
                    reject(error);
                }
            });
        } else {
            resolve(null);
        }
    });
};

checkDocker().then((addr) => {
    if (addr) {
        console.log("'get-docker-host'API' IP reports as: " + addr);
             console.log("END");
    } else {
        console.log('Not in Docker');
    }
}).catch((error) => {
    console.log('Could not find Docker host: ' + error);
});

IP-адрес get-docker-host'API: 172.17.0.1

Когда я получаю IP-адрес моей машины через Bash, я получаю это ..

sh-3.2# ifconfig | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'
10.106.117.79

Таким образом, вызовы API узла должны получать IP-адрес контейнера Docker. Есть ли способ получить IP хоста?

1 Ответ

0 голосов
/ 02 ноября 2018

Используйте host.docker.internal имя хоста, которое будет преобразовано в IP-адрес хост-машины, на которой выполняется контейнер.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...