在docker中,当由于docker网络而使用嵌入式DNS时,我的应用程序具有以下DNS
search ipa.pain.com pain.com
nameserver 127.0.0.11
options rotate timeout:1 ndots:0
设置
timeout:1
似乎来自使用该设置通过 DNS 的主机。然而,此设置似乎会使 Docker DNS 重试相同的条目,因此无法通过 DNS。有没有办法让我覆盖这个?
例如,在我的主机 PC 设置上:
'cat /etc/resolv.conf':
nameserver 8.8.8.8
我可以通过两种方式更新容器上的这个值:
第一种方法: 在“/etc/docker/daemon.json”中添加 DNS 和 DNS opt 值,然后重新启动 Docker 服务(systemctl restart docker)。
{
"dns": [ "127.0.0.1"],
"dns-opts": ["timeout:5", "rotate"]
}
测试:容器上更新了新的 DNS 和 DNS 选项值。
docker run --rm ubuntu:latest cat /etc/resolv.conf
nameserver 127.0.0.1
options timeout:5 rotate
第二种方式: 使用 DNS 和 DNS opt 参数运行容器。只有创建的容器才会运行这些值。每次运行都需要参数。
测试:
docker run --rm --dns 127.0.0.1 --dns-opt timeout:10 --dns-opt rotate ubuntu:latest cat /etc/resolv.conf
nameserver 127.0.0.1
options timeout:10 rotate