gpt4 book ai didi

docker - docker swarm中的容器无法解析外部地址的dns

转载 作者:行者123 更新时间:2023-12-02 21:30:58 27 4
gpt4 key购买 nike

在研究了这个问题很长时间之后,仍然在努力寻找解决方案。朝正确方向的任何指针将不胜感激。
主机操作系统-CentOS 8.使用VMWare Fusion Pro,VM位于NAT之后。为简单起见,没有工作节点,只有一个管理节点。
在我的CentOS 8 VM上创建了swarm服务,如下所示-

docker service create  -d -p 80:80 nginx
服务已成功创建,我可以看到nginx主页。
但是,我不能从容器内部执行 curl google.com
以下是一些事实和我失败的尝试-
我已经将/etc/docker/daemon.json更改为包含以下内容,然后重新启动docker服务-
{
"dns": ["8.8.8.8"]
}
如果我创建了可以正确解析dns的单个docker容器(docker容器运行..),那我没有问题。请参阅以下代码段-
root@e180d56ab94a:/# cat /etc/resolv.conf 
search localdomain
nameserver 8.8.8.8
root@e180d56ab94a:/# curl google.com
<HTML><HEAD><meta http-equiv="content-type" content="text/html;charset=utf-8">
<TITLE>301 Moved</TITLE></HEAD><BODY>
<H1>301 Moved</H1>
The document has moved
<A HREF="http://www.google.com/">here</A>.
</BODY></HTML>
但是从docker服务创建的容器不执行dns解析。
我的主机IP是192.168.112.135,我的主机的resolv.conf说名称服务器是192.168.112.2,我的容器的IP是10.0.0.14。因此,我猜这里没有IP重叠,因此可以排除在该线程 https://github.com/moby/moby/issues/27399中发现问题的可能性。
我的主机的resolv.conf看起来像这样-
$ cat /etc/resolv.conf 
# Generated by NetworkManager
search localdomain
nameserver 192.168.112.2
基于 What is overlay network and how does DNS resolution work?,我也尝试了以下操作,但无济于事-
docker service create --dns 192.168.112.2  -d -p 80:80 nginx
docker 检查容器显示以下片段
:
:
"DNSConfig": {
"Nameservers": [
"192.168.112.2"
]
},
:
:
但这也不起作用。
这项工作也没有
docker service create --dns 8.8.8.8  -d -p 80:80 nginx
我已经允许docker0通过防火墙-
$ sudo firewall-cmd --permanent --zone=trusted --add-interface=docker0

$ sudo firewall-cmd --reload
如果在AWS的EC2实例上运行相同的命令,则容器可以毫无问题地解析dns。
该问题可以在我的VM上重现。还尝试了不同的安装-CentOS 8最小安装以及完整安装。
已经完成了许多次-重新启动了docker服务,网络,主机,使节点离开了群集,并重新群集了。
我想念什么?

最佳答案

这对我有用
查看此链接。
问题出在centos8 Firewalld,因为它默认将FirewallBackend设置为nftables。将其更改为iptables起作用。
https://github.com/docker/for-linux/issues/957#issuecomment-627166787

关于docker - docker swarm中的容器无法解析外部地址的dns,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64494829/

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