首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >容器无法解析CentOS中的域名

问容器无法解析CentOS中的域名
EN

Stack Overflow用户
提问于 2020-05-02 22:27:10
回答 1查看 1.8K关注 0票数 1

我刚刚在CentOS 8上安装了Docker,一切都很顺利,我已经运行了hello_world测试容器,结果是成功的。问题是,在容器中,我无法解析任何DNS查询。

例如,当我输入ping 8.8.8.8 (在任何类型的基础容器上,如Ubuntu或CentOS)时,我得到了正确的答案,但当我尝试运行ping google.com时,我没有得到任何答案,这意味着容器无法解析任何URL的DNS。

我也尝试过运行一个基本容器,如下所示:

代码语言:javascript
复制
docker run busybox ping -c 1 192.203.230.10

我得到了这个(正确的)输出:

代码语言:javascript
复制
[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:

代码语言:javascript
复制
docker run busybox nslookup google.com

我得到以下输出:

代码语言:javascript
复制
[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的计算机上:

代码语言:javascript
复制
[server@localhost ~]$ cat /etc/resolv.conf 
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4

在任何Docker容器中:

代码语言:javascript
复制
bash-4.4# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4

这看起来是一个正常且有效的配置,但当我尝试ping google.com (在容器内)时,我得到:

代码语言:javascript
复制
bash-4.4# ping google.com
ping: google.com: Try again

我可以尝试哪些新事物?

EN

回答 1

Stack Overflow用户

发布于 2020-05-03 02:25:07

该问题的解决方案似乎是使用以下命令将docker添加为firewalld上的可信接口:

代码语言:javascript
复制
firewall-cmd --permanent --zone=trusted --add-interface=docker0

然后使用以下命令重新加载firewalld:

代码语言:javascript
复制
firewall-cmd --reload

在它应该正常工作之后(记得重启)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61560943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档