Docker-контейнер не подключается к другому Docker-контейнеру на сервере - PullRequest
0 голосов
/ 03 июля 2018

Я использую докер-капельку Digital Ocean и у меня есть 3 док-контейнера: 1 для внешнего интерфейса, 1 для внутреннего и 1 для других инструментов с различными зависимостями, назовем его back-end 2.

Внешний интерфейс вызывает внутренний сервер 1, внутренний сервер 1, в свою очередь, вызывает внутренний сервер 2. Контейнер внутреннего интерфейса 2 предоставляет службу gRPC через порт 50051. Локально, выполнив следующую команду: Мне удалось определить, какая служба докера должна работать с IP 127.17.0.1:

docker network inspect bridge --format='{{json .IPAM.Config}}'

Поэтому я понимаю, что мой сервер gRPC доступен по следующему URL-адресу 127.17.0.1:50051 внутри сервера.

К сожалению, сервер gRPC отклоняет соединения при запуске из капли докера, в то время как он отлично работает при локальном запуске.

Есть идеи, что может отличаться?

Ответы [ 3 ]

0 голосов
/ 04 июля 2018

Обычно вы должны настроить частную сеть Docker для связи между контейнерами, используя их имена контейнеров; см. например, Как установить связь между контейнерами Docker через "имя хоста" . Внутренние IP-адреса Docker могут изменяться, если вы удаляете и воссоздаете контейнер, и недоступны с внешнего компьютера, и попытка найти их, как правило, не рекомендуется.

172.17.0.0 / 16 - типичное значение по умолчанию для внутренней IP-сети Docker (127.0.0.0/8 - зарезервированная петлевая сеть IPv4), и похоже, что вы могли набрать адрес, полученный от docker network inspect.

0 голосов
/ 07 июля 2018

Вы можете запустить привязку докера к ip и порту, как показано Aakash. Пожалуйста, ограничьте доступ к этому конкретному IP-адресу и порту, доступ к которому возможен только с другого IP-адреса и порта док-станции - это поможет запускать докер в частном порядке и не разрешать другие (даже другие докеры / экземпляры в вашей сети).

0 голосов
/ 04 июля 2018

Попробуйте docker run с помощью следующей команды:

docker run -d -p {server ip}:12345 {back-end 2 image}

Он выставит IP-порт в Docker-контейнер и будет доступен с других серверов.
Примечание: также проверьте правила брандмауэра, если брандмауэр блокирует доступ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...