web-dev-qa-db-ja.com

DockerでカスタムDNSサーバーを構成する方法

Webアプリが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 

何が欠けていますか?

構成:

  • OS X 10.9.4
  • Dockerバージョン1.1.0、ビルド79812e3
  • boot2dockerクライアントのバージョン:v1.1.0、Gitコミット:7e20d36
8

--dnsdocker runですが、docker build。より良い解決策は、設定をグローバルに調整することです

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

Ubuntuでは、この行を/etc/default/docker

9
geekQ

私が見落としているのは、オプションと引数の順序を混乱させたことです。 runの後に--dnsを指定すると、すべて正常に動作します。

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

どー。

6