Docker Bridge網絡模式下解析DNS問題

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服務即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章