Межконтейнерная связь Docker без номера порта

#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 без добавления номера порта.