Назад | Перейти на главную страницу

Как настроить собственный DNS-сервер с помощью Docker?

Мне нужно добавить несколько строк в /etc/hosts чтобы мое веб-приложение работало внутри контейнера Docker.

Докера /etc/hosts только для чтения.

Я пытаюсь использовать dnsmasq:

FROM ubuntu:14.04
# ...
RUN apt-get install -y -q dnsmasq
RUN echo 'listen-address=127.0.0.1' >> /etc/dnsmasq.conf
RUN echo 'resolv-file=/etc/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf
RUN echo 'conf-dir=/etc/dnsmasq.d' >> /etc/dnsmasq.conf
RUN echo 'user=root' >> /etc/dnsmasq.conf
RUN echo 'nameserver 8.8.8.8' >> /etc/resolv.dnsmasq.conf
RUN echo 'nameserver 8.8.4.4' >> /etc/resolv.dnsmasq.conf
RUN echo 'address="/mydomain/127.0.6.1"' >> /etc/dnsmasq.d/0hosts
RUN service dnsmasq start

Однако я не могу заставить Docker использовать мой DNS-сервер:

$ docker --dns=127.0.0.1 run my/container cat /etc/resolv.conf
nameserver 8.8.8.8
nameserver 8.8.4.4

Что мне не хватает?

Конфигурация:

--dns работает на docker run но не для docker build. Лучшее решение - изменить настройки глобально с помощью

DOCKER_OPTS="--dns=my-private-dns-server-ip --dns=8.8.8.8"

В Ubuntu я помещаю эту строку в /etc/default/docker

Чего мне не хватает, так это того, что я испортил порядок опций и аргументов. Если я уточню --dns после run, все нормально работает.

$ docker run --dns=127.0.0.1 my/container cat /etc/resolv.conf
nameserver 127.0.0.1

Дох.