Выбор ответа Middle Сети и тома обновлено
Обращение из контейнера к хосту
Вопрос
Приложение в контейнере на Linux должно обратиться к сервису, который слушает порт на самом хосте. Как это сделать корректно?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: --add-host=host.docker.internal:host-gateway и обращаться к этому имени. localhost в контейнере это сам контейнер.
Варианты ответа
- Обращаться к
localhost: в Linux контейнер делит loopback с хостом - Никак: bridge-сеть изолирует контейнер от процессов хоста полностью
--add-host=host.docker.internal:host-gatewayи обращаться к этому имениправильный ответ- Запустить сервис хоста в том же образе вторым процессом (supervisord)
Разбор
localhost в контейнере это сам контейнер. Специальное значение host-gateway подставляет адрес шлюза bridge-сети, то есть хоста. В Docker Desktop имя host.docker.internal есть из коробки. Сервис на хосте при этом должен слушать не только 127.0.0.1. Альтернатива: --network host, но с потерей изоляции.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.