Como configurar o servidor DNS personalizado com o Docker?

8

Eu preciso adicionar algumas linhas a /etc/hosts para meu aplicativo da web funcionar dentro de um contêiner do Docker.

O /etc/hosts do Docker é somente leitura.

Estou tentando usar o 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

No entanto, não consigo fazer o Docker usar meu servidor DNS:

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

O que estou perdendo?

Configuração:

  • OS X 10.9.4
  • Docker versão 1.1.0, compilação 79812e3
  • boot2docker Versão do cliente: v1.1.0, Git commit: 7e20d36
por Alexander Gladysh 12.07.2014 / 07:48

2 respostas

9

--dns funciona para docker run , mas não para docker build . Então, uma solução melhor é ajustar as configurações globalmente com

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

No Ubuntu eu coloquei esta linha em /etc/default/docker

    
por 21.10.2014 / 16:23
6

O que eu sinto falta é que eu estraguei a ordem de opções e argumentos. Se eu especificar --dns após run , tudo funciona bem.

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

Doh.

    
por 12.07.2014 / 19:05