gpt4 book ai didi

docker - dnsmasq 跨 docker 容器的奇怪行为

转载 作者:行者123 更新时间:2023-12-02 18:41:49 26 4
gpt4 key购买 nike

我有一个运行 docker 容器的 CoreOS 实例,该容器运行 dnsmasq .目前dnsmasq配置仅设置为记录所有查询并在 Debug模式下运行,因此它应该只进行缓存。

当我尝试使用 dig 从不同的容器中使用它时, nslookup ,或者只是运行ping google.com我回来了Bad hostname: google.com我可以在日志查询中看到请求多次到来,就好像正在重试一样。

如果我尝试从运行 CoreOS 的主机上运行相同的命令,一次尝试就可以解决所有问题。

我的计划是运行 dnsmasq在集群中的每台 CoreOS 机器上,并由 confd 支持,以便所有服务都可以解析相应的对口。

我将 Alpine linux 用于我的基本镜像,但我尝试在 Ubuntu 和 Debian 镜像中运行这些命令,结果相同。

最佳答案

正确的做法出现在以下线程 (Setting Up Docker Dnsmasq)

当暴露端口时,它应该明确绑定(bind)到主机的 IP 地址(在我们的例子中是内部的)。

容器的调用看起来像这样:

source /etc/environment
docker run -d --cap-add NET_ADMIN \
-p "$COREOS_PRIVATE_IPV4:53:53" \
-p "$COREOS_PRIVATE_IPV4:53:53/udp" \
-e COREOS_PRIVATE_IPV4="$COREOS_PRIVATE_IPV4"\
someorg/dnsmasq

然后所有使用 --dns "$COREOS_PRIVATE_IPV4" 运行的容器通过机器级 dnsmasq 正确解析。

关于docker - dnsmasq 跨 docker 容器的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36269944/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com