Я пишу приложение 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 хоста?