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


8

/etc/hostsWebアプリがDockerコンテナー内で機能するように、数行追加する必要があります。

Docker /etc/hostsは読み取り専用です。

私はdnsmasqを使用しようとしています:

ubuntuから:14.04
#...
apt-get install -y -q dnsmasqを実行します。
RUN echo 'listen-address = 127.0.0.1' >> /etc/dnsmasq.conf
実行エコー '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サービスdnsmasq開始

ただし、DockerでDNSサーバーを使用できません。

$ docker --dns = 127.0.0.1 my / container cat /etc/resolv.confを実行します
ネームサーバー8.8.8.8
ネームサーバー8.8.4.4

何が欠けていますか?

構成:

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

回答:


9

--dnsでは機能しますdocker runが、では機能しませんdocker build。より良い解決策は、設定をグローバルに調整することです

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

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


/etc/default/dockerdockerデーモンが実行されるとき、ファイルは使用されないことに注意してくださいdaemon.json。設定ファイルを変更する必要があります。docs.docker.com/engine/reference/commandline/dockerd/…を
Davide Icardi

6

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

$ docker run --dns = 127.0.0.1 my / container cat /etc/resolv.conf
ネームサーバー127.0.0.1

どー。


ただし、これは機能しません— dnsmasqはダウンしています...
Alexander Gladysh 14

--dnsオプションを複数回使用することもできます。例docker run --dns 8.8.8.8 --dns 127.0.0.1 my/container
Bruno Bieri 2016年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.