我需要添加几行代码/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
我忽略的是,我弄乱了选项和参数的顺序。如果我指定--dns
after run
,则一切正常。
$ docker run --dns=127.0.0.1 my/container cat /etc/resolv.conf 名称服务器 127.0.0.1
哎呀。