我刚刚在CentOS 8上安装了Docker,一切都很顺利,我已经运行了hello_world测试容器,结果是成功的。问题是,在容器中,我无法解析任何DNS查询。
例如,当我输入ping 8.8.8.8 (在任何类型的基础容器上,如Ubuntu或CentOS)时,我得到了正确的答案,但当我尝试运行ping google.com时,我没有得到任何答案,这意味着容器无法解析任何URL的DNS。
我也尝试过运行一个基本容器,如下所示:
docker run busybox ping -c 1 192.203.230.10我得到了这个(正确的)输出:
[server@localhost ~]$ docker run busybox ping -c 1 192.203.230.10
PING 192.203.230.10 (192.203.230.10): 56 data bytes
64 bytes from 192.203.230.10: seq=0 ttl=51 time=32.413 ms
--- 192.203.230.10 ping statistics ---
1 packets transmitted, 1 packets received, 0% packet loss
round-trip min/avg/max = 32.413/32.413/32.413 ms但现在尝试使用以下命令解析域google.com:
docker run busybox nslookup google.com我得到以下输出:
[server@localhost ~]$ docker run busybox nslookup google.com
nslookup: write to '8.8.8.8': No route to host
nslookup: write to '8.8.4.4': No route to host
;; connection timed out; no servers could be reached我发现这个问题真的很令人沮丧,因为我还没有找到解决它的方法。为了完整起见,我附上了运行Docker的机器和容器本身的cat /etc/resolv.conf
在装有CentOS 8的计算机上:
[server@localhost ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4在任何Docker容器中:
bash-4.4# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4这看起来是一个正常且有效的配置,但当我尝试ping google.com (在容器内)时,我得到:
bash-4.4# ping google.com
ping: google.com: Try again我可以尝试哪些新事物?
发布于 2020-05-03 02:25:07
该问题的解决方案似乎是使用以下命令将docker添加为firewalld上的可信接口:
firewall-cmd --permanent --zone=trusted --add-interface=docker0然后使用以下命令重新加载firewalld:
firewall-cmd --reload在它应该正常工作之后(记得重启)
https://stackoverflow.com/questions/61560943
复制相似问题