#docker #docker-networking
#docker #docker-сеть
Вопрос:
У меня есть 2 контейнера docker (имя контейнера: A amp; B) на 1 хосте, и они подключены к одному и тому же определяемому пользователем мосту (тестовый мост).
Целевое состояние / Попытка достичь:
Чтобы иметь возможность вызывать контейнер B из контейнера A только через hostname, а не hostname:port.
Текущее состояние:
Я могу вызывать API, размещенные внутри контейнера B, через URL http: //{{containerName:PortNumber}, т.е. http://B:6000 из контейнера A.
Я хочу избавиться от номера порта, потому что IMO, подключенный к той же сети вместе с именем контейнера, должен быть достаточным для разрешения запроса нацель container.
Is существует ли способ межконтейнерной коммуникации с помощью этого подхода
Обновить
Все еще ищу решение, поскольку пакет, над которым я работаю, будет основной утилитой (по крайней мере, 3 контейнера), это будет развернуто с другими приложениями docker. Номер порта 80 поможет только 1 контейнеру, но для вызова других утилит вызывающему абоненту потребуется присоединить номер порта, который я не могу предоставить, поскольку это информация на уровне инфраструктуры / сети.
Комментарии:
1. Порт также является важной информацией, поскольку 6000 является нестандартным HTTP-портом (стандартный — 80). Если бы это было 80, вы могли бы опустить его, а для HTTPS вы могли бы опустить порт 443. Ваша служба не может узнать, что API прослушивает порт 6000 в другом контейнере.
2. хм.. Я ожидал, что если имя контейнера уже присутствует, то и в той же сети оно может быть легко извлечено / идентифицировано docker, и это избавило бы от необходимости жесткого кодирования порта в url
3. Если проблема заключается в жестком кодировании порта, задайте его в переменной и используйте эту переменную в URL-адресе?
Ответ №1:
Вы можете использовать порт HTTP по умолчанию (80), и тогда вам не нужно будет его указывать.
Измените приложение B на прослушивание порта 80 — тогда вы сможете звонить http://B
без добавления номера порта.