解決CentOS 8 Docker容器無法上網的問題
阿新 • • 發佈:2020-12-29
釋出於:2020-11-28
CentOS 8已經發行好長一段時間,為了嚐鮮在Online獨服上安裝了CentOS 8系統,隨之問題來了,發現Docker容器無法訪問外網,而CentOS 7上則不存在這個問題。
排錯分析
一開始懷疑是Docker DNS設定問題,導致Docker容器無法解析。遂修改配置檔案/etc/docker/daemon.json
設定DNS:
{
"dns" : [
"8.8.8.8",
"1.1.1.1"
]
}
修改後重啟Docker服務,發現Docker容器還是無法聯網。
解決辦法
通過搜尋瞭解到CentOS 8上防火牆發生了一些變化,防火牆原來使用iptables
,現在使用nftables
,猜測可能是轉發引起的問題。通過搜尋終於在Github上找到類似的情況:DNS Not Resolving under Network [CentOS8],解決辦法為:
編輯firewalld配置檔案/etc/firewalld/firewalld.conf
,將:
FirewallBackend=nftables
修改為:
FirewallBackend=iptables
並重啟Firewalld:systemctl restart firewalld.service
最後再重啟下Docker:systemctl restart docker
總結
- 可通過修改
/etc/docker/daemon.json
設定Docker DNS - CentOS 8防火牆由
iptables
變更為了nftables
- 可通過修改Firewalld配置檔案
/etc/firewalld/firewalld.conf
將nftables
換回iptables