我正在编写一个NodeJS应用程序,其中试图从docker容器内部获取docker主机IP。我正在使用的节点API似乎只能获取docker容器IP。
我正在使用os API的第一种方法:
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);
});
'get-docker-host'API'IP报告为:172.17.0.1
当我通过Bash获取机器的IP时,就会得到这个。.
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调用必须获取docker容器IP。有没有办法获取主机IP?
答案 0 :(得分:2)
使用host.docker.internal
主机名,它将解析为运行容器的主机的IP。