Доступ к внешнему порту из контейнера докеров

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

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

На моем 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.info(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

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

pacuna 12.09.2018 05:56

спасибо за комментарий, но мост реализует довольно небольшую часть сетевого стека. Следовательно, он может открывать подключения к ЛЮБОМУ месту (testing.example.com). Я не понимаю, как из этого можно исключить только хост.

Makan Tayebi 12.09.2018 10:32
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
1
2
319
0

Другие вопросы по теме