Странное поведение dnsmasq в док-контейнерах
У меня есть экземпляр CoreOS с док-контейнером, который работает dnsmasq
, В настоящее время dnsmasq
Конфигурация настроена только на запись всех запросов и запуск в режиме отладки, поэтому она должна просто выполнять кэширование.
Когда я пытаюсь использовать это из другого контейнера с dig
, nslookup
или просто работает ping google.com
Я вернусь Bad hostname: google.com
и я вижу в журнале запросов, что запросы поступают несколько раз, как будто они повторяются.
Если я попытаюсь выполнить те же команды с хост-компьютера, на котором запущен CoreOS, все проблемы не решаются за одну попытку.
Мой план - запустить dnsmasq
на каждом компьютере с операционной системой CoreOS в кластере, и для его поддержки confd
, так что все сервисы могут разрешать соответствующие аналоги.
Я использую Alpine linux для своих базовых образов, но я попытался выполнить эти команды внутри Ubuntu и образа Debian с тем же результатом.
1 ответ
Правильно было поступить в следующем потоке ( Настройка Docker Dnsmasq)
при выставлении порта он должен быть явно привязан к IP-адресу хоста (в нашем случае внутренний).
Вызов контейнера выглядит примерно так:
source /etc/environment
docker run -d --cap-add NET_ADMIN \
-p "$COREOS_PRIVATE_IPV4:53:53" \
-p "$COREOS_PRIVATE_IPV4:53:53/udp" \
-e COREOS_PRIVATE_IPV4="$COREOS_PRIVATE_IPV4"\
someorg/dnsmasq
Затем все контейнеры, которые запускаются с --dns "$COREOS_PRIVATE_IPV4"
получить разрешение через машинный уровень dnsmasq правильно.