Como configurar o servidor DNS personalizado com o Docker?

8

Preciso adicionar algumas linhas para /etc/hostsque meu aplicativo Web funcione dentro de um contêiner do Docker.

O Docker /etc/hostsé somente leitura.

Estou tentando usar o dnsmasq:

FROM ubuntu: 14.04
# ...
Execute o apt-get install -y -q dnsmasq
Executar eco 'endereço de escuta = 127.0.0.1' >> /etc/dnsmasq.conf
EXECUTAR echo 'resolv-file = / etc / resolv.dnsmasq.conf' >> /etc/dnsmasq.conf
EXECUTAR echo 'conf-dir = / etc / dnsmasq.d' >> /etc/dnsmasq.conf
EXECUTAR eco 'usuário = 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
EXECUTAR echo 'address = "/ meudomínio / 127.0.6.1"' >> /etc/dnsmasq.d/0hosts
Serviço RUN dnsmasq start

No entanto, não consigo que o Docker use meu servidor DNS:

$ docker --dns = 127.0.0.1 execute meu / 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
  • Versão do cliente boot2docker: v1.1.0, Git commit: 7e20d36
Alexander Gladysh
fonte

Respostas:

9

--dnstrabalha para docker runmas não para docker build. A melhor solução é ajustar as configurações globalmente com

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

No Ubuntu, coloquei essa linha em /etc/default/docker

geekQ
fonte
Observe que o /etc/default/dockerarquivo não é usado quando o daemon do docker é executado; você deve modificar o daemon.jsonarquivo de configuração. Veja docs.docker.com/engine/reference/commandline/dockerd/…
Davide Icardi
6

O que sinto falta é que errei a ordem das opções e argumentos. Se eu especificar --dnsdepois run, tudo funcionará bem.

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

Doh.

Alexander Gladysh
fonte
No entanto, isso não funciona - o dnsmasq está inativo ...
Alexander Gladysh
Você também pode usar a --dnsopção mais de uma vez. Por exemplodocker run --dns 8.8.8.8 --dns 127.0.0.1 my/container
Bruno Bieri 25/10