Я прочитал это , это и это .
Несмотря на то, что об этом спрашивают много раз, я не понимаю этого, и это кажется неубедительным. Пожалуйста, рассмотрите, прежде чем публиковать возможных дубликатов .
На моем Ubuntu 16 у меня есть контейнер, который должен получать доступ к службам вне контейнера. Невозможно использовать --network="host"
, потому что это противоречит цели использования Docker для меня. Кроме того, документация гласит: «Мостовые сети обычно используются, когда ваши приложения работают в автономных контейнерах, которые должны взаимодействовать», - в этом случае.
Итак, выбрав сетевой подход bridge
, я попробовал решение здесь (безусловно, самый популярный вопрос и ответы, найденные в Интернете). Где он говорит, используйте команду «route» внутри контейнера, чтобы получить IP-адрес хоста:
export DOCKER_HOST_IP=$(route -n | awk '/UG[ \t]/{print $2}')
Есть две проблемы:
1: Является ли это наиболее простым решением для такой тривиальной потребности?
2: я выполняю это в своем контейнере в моем приложении узла:
await execSync("route -n | awk '/UG[ \t]/{print $2}'", (err, stdout,stderr) =>{
if (err) {
console.error("Failed: " + err);
return;
}
if (stdout)
console.log(stdout);
if (stderr)
console.error(stderr);
});
Что (как и следовало ожидать) приводит к этому:
/bin/sh: 1: route: not found
Я попробовал - add-host решение , но как мне узнать, какой IP-номер использовать?
Другими словами, откуда этот IP-адрес?
--add-host=testing.example.com:10.0.0.1