Существует множество способов, с помощью которых контейнеры Docker могут запутаться в настройках DNS (просто найдите SO или более широкий Интернет для "Docker DNS", чтобы увидеть, что я имею в виду), и один из распространенных обходных решений:
- Настроить dnsmasq как локальный DNS-резольвер в главной системе.
- Привяжите его к сетевому интерфейсу
docker0
- Настроить Docker для использования IP-адреса
docker0
для разрешения DNS
Однако попытка применить это обходное решение наивно на многих современных Linux-системах приведет к тому, что вы столкнетесь с кроликом сложности Linux и сложностью управления процессами, поскольку systemd уверяет вас, что dnsmasq
не работает, но netstat
сообщает вам, что он, и на самом деле пытается запустить dnsmasq
, не удается с жалобой на то, что порт 53 уже используется.
Итак, как вы надежно передаете своим контейнерам доступ к локальному резольверу, запущенному на хосте, даже если в системе уже есть один запуск по умолчанию?