Доступ к внешнему порту из док-контейнера - PullRequest
0 голосов
/ 12 сентября 2018

Я прочитал это , это и это .

Несмотря на то, что об этом спрашивают много раз, я не понимаю этого, и это кажется неубедительным. Пожалуйста, рассмотрите, прежде чем публиковать возможных дубликатов .

На моем 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...