Docker Bridge网络模式下解析DNS问题

本文详细介绍了在Centos8环境下,解决Docker容器内无法解析域名的问题。通过调整防火墙设置并重启Docker服务,成功实现了容器内的域名解析。

Docker的网络模式有Bridge(桥接)模式,host(主机)模式,overlay模式等等,参见https://docs.docker.com/network/,默认为Bridge模式。
在此模式下,容器是一个单独的网络系统,通过虚拟的docker0网络设备桥接到主机的网卡进行网络通信。
今天在Centos8虚拟机中创建的Docker,在Bridge模式下,docker容器可以ping通主机IP,也可以ping通外网的IP,但就是不能使用域名,比如

ping 163.com

就无法ping通,如果没有ping命令的可以通过:

yum install iputils

安装。

在网上找了很久,有说通过创建容器时指定DNS的,如:

docker run -itd --name centos6 --dns=172.17.0.1 centos:centos6

也有说通过编辑/etc/sysconfig/docker或者/etc/docker/daemon.json来指定DNS的。
这些方法我使用后一律不起作用,因为我的系统是没有关闭防火墙的,可以通过命令:

systemctl status firewalld

或者

firewall-cmd --state

来查看防火墙的运行状态。

最后终于找到了解决方法:

firewall-cmd --zone=public --add-masquerade --permanent
firewall-cmd --reload
systemctl restart docker

通过上面的指令修改防火墙,然后重启docker服务即可。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值