Рейтинг:0

Как подключить контейнер в другой сети докеров?

флаг ke

У меня есть postgres, работающий в сети контейнеров по умолчанию, поскольку он запускался с помощью команды запуска docker. И наше веб-приложение работает на том же сервере, но работает как служба создания докеров. Таким образом, для этого автоматически создается отдельная мостовая сеть.

Как подключить этот контейнер веб-приложения, созданный службой создания докеров, в пользовательской сети к базе данных postgres, созданной с помощью команды запуска докера в сети по умолчанию?

Я пытался использовать localhost, host.docker.internal оба не работают. IP-адрес подключения к локальной сети хост-компьютера работает, но он может измениться, если я буду работать на другом сервере, поэтому бесполезен.

Рейтинг:0
флаг ar

Контейнеры в разных сетях не могут общаться друг с другом, потому что iptables отбрасывает такие пакеты. Это показано в цепочках DOCKER-ISOLATION-STAGE-1 и DOCKER-ISOLATION-STAGE-2 в таблице фильтров.

sudo iptables -t фильтр -vL

В цепочку DOCKER-USER можно добавить правила, чтобы обеспечить связь между разными сетями. В приведенном выше сценарии следующие команды позволят ЛЮБОМУ контейнеру в mynetwork1 взаимодействовать с ЛЮБЫМИ контейнерами в mynetwork2.

Сначала необходимо найти имена интерфейсов моста сети (mynetwork1 и mynetwork2).Их имена обычно выглядят как br-07d0d51191df или br-85f51d1cfbf6, и их можно найти с помощью команды «ifconfig» или «ip link show». Поскольку существует несколько интерфейсов моста, чтобы определить правильные для интересующих сетей, адрес inet интерфейса моста (показанный в ifconfig) должен соответствовать адресу подсети, указанному в команде «docker network inspect mynetwork1».

sudo iptables -I DOCKER-USER -i br-########1 -o br-########2 -j ПРИНЯТЬ
sudo iptables -I DOCKER-USER -i br-########2 -o br-########1 -j ПРИНЯТЬ

Правила можно настроить таким образом, чтобы разрешить связь только между определенными IP-адресами. Например,

sudo iptables -I DOCKER-USER -i br-#########1 -o br-########2 -s 172.17.0.2 -d 172.19.0.2 -j ПРИНЯТЬ
sudo iptables -I DOCKER-USER -i br-########2 -o br-########1 -s 172.19.0.2 -d 172.17.0.2 -j ПРИНЯТЬ
uday avatar
флаг ke
Ваш ответ — создать новый сетевой мост для всех контейнеров в нем. Но мой вопрос в другом, я спрашиваю о связности между контейнерами из двух разных сетевых мостов.

Ответить или комментировать

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