1. 程式人生 > 實用技巧 >解決CentOS 8 Docker容器無法上網的問題

解決CentOS 8 Docker容器無法上網的問題

釋出於:2020-11-28Docker2條評論3,051 views
如需VPS代購、PHP開發、伺服器運維等服務,請聯絡博主QQ:337003006

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

,驗證問題解決。

總結

  1. 可通過修改/etc/docker/daemon.json設定Docker DNS
  2. CentOS 8防火牆由iptables變更為了nftables
  3. 可通過修改Firewalld配置檔案/etc/firewalld/firewalld.confnftables換回iptables