Docker 容器內(nèi)部無法訪問外部網(wǎng)絡(luò)解決記

問題背景概述:

通過docker拉取jenkins鏡像后通過以下命令運(yùn)行jenkins容器實(shí)例:

docker run --name jenkins -p 8080:8080 -p 50000:50000 -v /opt/data/jenkins/:/var/jenkins_home jenkins

jenkins容器實(shí)例正確運(yùn)行,并且可以通過瀏覽器正常訪問。
后續(xù)按照常規(guī)需要配置jenkins插件時(shí), 出現(xiàn)java.net.HostNotFoundException: updates.jenkins-ci.org

問題排查:

  1. 查詢docker官方文檔bridge相關(guān)網(wǎng)絡(luò)概述(docker 如果沒有指定,會(huì)使用默認(rèn)的bridge網(wǎng)絡(luò)):


    image.png

    按照所述內(nèi)容設(shè)置后重啟docker 和實(shí)例應(yīng)用,仍然報(bào)java.net.HostNotFoundException: updates.jenkins-ci.org錯(cuò)誤。

  2. 查詢docker網(wǎng)絡(luò)的轉(zhuǎn)發(fā)原理,docker中的網(wǎng)絡(luò)是通過NAT轉(zhuǎn)發(fā)至宿主主機(jī)處理的,遂查詢宿主主機(jī)防火墻NAT轉(zhuǎn)發(fā)情況:
$ firewall-cmd --query-masquerade
no

通過以上情況可見在此宿主主機(jī)中防火墻的NAT轉(zhuǎn)發(fā)并未開啟,通過以下命令開啟,并重啟防火墻:

$ firewall-cmd --zone=public --add-masquerade --permanent
$ firewall-cmd --reload

不需要重啟docker, 直接訪問jenkins應(yīng)用,發(fā)現(xiàn)原錯(cuò)誤未再現(xiàn),可正常配置插件。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容