Bagaimana cara mengkonfigurasi server DNS khusus dengan Docker?

8

Saya perlu menambahkan beberapa baris agar /etc/hostsaplikasi web saya berfungsi di dalam wadah Docker.

Docker /etc/hostshanya baca.

Saya mencoba menggunakan dnsmasq:

DARI ubuntu: 14.04
# ...
RUN apt-get install -y -q dnsmasq
RUN echo 'listen-address = 127.0.0.1' >> /etc/dnsmasq.conf
LARI echo 'resolv-file = / etc / resolv.dnsmasq.conf' >> /etc/dnsmasq.conf
LARI echo 'conf-dir = / etc / dnsmasq.d' >> /etc/dnsmasq.conf
JALANKAN 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
Layanan RUN dnsmasq mulai

Namun, saya tidak bisa membuat Docker menggunakan server DNS saya:

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

Apa yang saya lewatkan?

Konfigurasi:

  • OS X 10.9.4
  • Docker versi 1.1.0, build 79812e3
  • Versi klien boot2docker: v1.1.0, Git commit: 7e20d36
Alexander Gladysh
sumber

Jawaban:

9

--dnsbekerja untuk docker runtetapi tidak untuk docker build. Jadi solusi yang lebih baik adalah menyesuaikan pengaturan secara global

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

Di Ubuntu saya memasukkan baris ini ke dalam /etc/default/docker

geekQ
sumber
Perhatikan bahwa /etc/default/dockerfile tidak digunakan ketika daemon docker dijalankan, Anda harus memodifikasi daemon.jsonfile konfigurasi. Lihat docs.docker.com/engine/reference/commandline/dockerd/…
Davide Icardi
6

Yang saya lewatkan adalah saya mengacaukan urutan opsi dan argumen. Jika saya tentukan --dnssetelahnya run, semuanya berfungsi dengan baik.

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

Doh.

Alexander Gladysh
sumber
Namun ini tidak berhasil - dnsmasq sedang down ...
Alexander Gladysh
Anda juga dapat menggunakan --dnsopsi lebih dari sekali. Misalnyadocker run --dns 8.8.8.8 --dns 127.0.0.1 my/container
Bruno Bieri