如何使用 Docker 配置自定义 DNS 服务器?

Ale*_*ysh 10 domain-name-system mac-osx docker

我需要添加几行来/etc/hosts让我的 web 应用程序在 Docker 容器中工作。

Docker/etc/hosts是只读的。

我正在尝试使用 dnsmasq:

从 ubuntu:14.04
# ...
运行 apt-get install -y -q dnsmasq
运行 echo 'listen-address=127.0.0.1' >> /etc/dnsmasq.conf
运行 echo 'resolv-file=/etc/resolv.dnsmasq.conf' >> /etc/dnsmasq.conf
运行 echo 'conf-dir=/etc/dnsmasq.d' >> /etc/dnsmasq.conf
运行 echo 'user=root' >> /etc/dnsmasq.conf
运行 echo 'nameserver 8.8.8.8' >> /etc/resolv.dnsmasq.conf
运行 echo 'nameserver 8.8.4.4' >> /etc/resolv.dnsmasq.conf
运行 echo 'address="/mydomain/127.0.6.1"' >> /etc/dnsmasq.d/0hosts
运行服务 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 commit:7e20d36

gee*_*ekQ 11

--dns适用于docker run但不适用于docker build. 所以更好的解决方案是全局调整设置

DOCKER_OPTS="--dns=my-private-dns-server-ip --dns=8.8.8.8"
Run Code Online (Sandbox Code Playgroud)

在 Ubuntu 上,我将此行放入 /etc/default/docker

  • 请注意,执行 docker daemon 时不会使用 `/etc/default/docker` 文件,您应该修改 `daemon.json` 配置文件。请参阅 https://docs.docker.com/engine/reference/commandline/dockerd/#daemon-configuration-file (6认同)

Ale*_*ysh 6

我缺少的是我弄乱了选项和参数的顺序。如果我--dns在之后指定run,一切正常。

$ docker run --dns=127.0.0.1 my/container cat /etc/resolv.conf
名称服务器 127.0.0.1

多。