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

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

我需要添加几行代码/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
运行回显“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 ‘名称服务器 8.8.8.8’ >> /etc/resolv.dnsmasq.conf
运行 echo ‘名称服务器 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 运行我的/容器 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

答案1

--dns适用于docker run但不适合docker build。因此更好的解决方案是使用以下方法全局调整设置

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

在 Ubuntu 上我把这一行放入/etc/default/docker

答案2

我忽略的是,我弄乱了选项和参数的顺序。如果我指定--dnsafter run,则一切正常。

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

哎呀。

相关内容