У меня есть служба dnsmasq , которая в настоящее время привязана к 127.0.0.1 , указывая на мой экземпляр minikube следующим образом:
address=/.k8s.local/192.168.39.184
Я Я хотел бы запустить контейнеры докеров, которые будут взаимодействовать с экземпляром minikube, используя указанный мной DNS.
Когда я устанавливаю DNS контейнера с помощью docker run --dns 127.0.0.1 ...
docker выводит следующее сообщение: ПРЕДУПРЕЖДЕНИЕ: настройка DNS для локального хоста (--dns = 127.0.0.1) может не работать в контейнерах.
Если я использую сеть хоста таким образом docker run --net host --dns 127.0.0.1 ...
все работает как положено.
Как настроить мост докеров для разрешения DNS с помощью моей локальной службы dnsmasq?
Вы можете использовать локальный DNS-преобразователь хоста (например, dnsmasq
) из ваших контейнеров Docker, если они находятся в пользовательской сети . В этом случае контейнер /etc/resolv.conf
будет иметь сервер имен 127.0.0.11
(также известный как встроенный DNS-сервер Docker ), который может пересылать DNS-запросы. на адрес обратной связи хоста.
$ cat /etc/resolv.conf
nameserver 127.0.0.1
$ docker run --rm alpine cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4
$ docker network create demo
557079c79ddf6be7d6def935fa0c1c3c8290a0db4649c4679b84f6363e3dd9a0
$ docker run --rm --net demo alpine cat /etc/resolv.conf
nameserver 127.0.0.11
options ndots:0