怎么解決docker容器無法通過IP訪問宿主機問題
千喜網(wǎng)絡服務器,容器主機
本文是關于如何解決docker容器無法通過IP訪問主機的問題。海外主機覺得很實用,就分享給大家參考,跟著海外主機看了看。
問題起源
在使用docker的過程中,不幸的是我需要訪問docker容器中主機的端口80,它是從另一個容器的端口8080映射而來的。當我通過容器中的docker的橋172.17.0.1訪問主機時,我發(fā)現(xiàn)了:
curl: 無法連接到172.17.0.1端口80:沒有到主機的路由
查找問題原因
可以確認容器和主機之間有網(wǎng)絡連接,因為可以ping通容器內(nèi)部的主機:到172.17.0.1。
root @ 930d 07576 eef :/# ping 172 . 17 . 0 . 1
ping 172 . 17 . 0 . 156字節(jié)數(shù)據(jù)。
來自172 . 17 . 0 . 1: icmp _ seq=1 TTL=64 time=0.130 ms的64字節(jié)也可以訪問容器內(nèi)部的其他內(nèi)部和外部網(wǎng)絡。
Iptables顯示還允許docker容器訪問:
#iptables - list|grepDOCKER
碼頭工人-隔離所有人-任何地方任何地方
任何地方任何地方
咨詢客服
鏈塢隔離后,搜索了一些數(shù)據(jù)才發(fā)現(xiàn)這個問題。沒有從容器到主機的主機網(wǎng)絡請求路由-從其他容器發(fā)布的IP :端口。
解釋
正如Docker社區(qū)表單所說,這是一個已知的錯誤。主機的80端口允許其他計算機訪問它,但不允許該計算機的Docker容器訪問它。防火墻規(guī)則必須設置為允許此計算機的Docker容器訪問它。
Gypark指出,在/etc/firewalld/zones/public . XML中添加防火墻規(guī)則可以避免這個問題。
rulefamily='ipv4 '
sourceaddress='172.17.0.0/16'/
接受/
/rule:注意這里的172.17.0.0/16可
然后重啟防火墻:
在systemctlrestartfirewalld之后,您可以訪問docker容器內(nèi)部主機的端口80。
其它問題
其實,當我用vmware打開一個新的虛擬機,希望重現(xiàn)這個問題時,我發(fā)現(xiàn)新的虛擬機上沒有類似的問題。也就是說容器可以通過172.17.0.1直接訪問主機80端口,我查防火墻配置的時候沒有看到172.17.xx.xx的白名單。
猜測是因為新虛擬機安裝的docker是docker版本1.12.5,build 047e51b/1.12.5,也就是Red Hat從docker開源版本開發(fā)的版本,而之前的版本是Docker版本17.06.2-ce。Build cec0b72屬于Docker-CE??赡躣ocker版本有區(qū)別。紅帽子順便修正了已知Bug。
感謝閱讀!本文關于“如何解決碼頭工人集裝箱無法通過IP訪問主機的問題”在此分享。希望以上內(nèi)容能幫助大家學到更多的知識。如果你覺得文章好,可以分享給更多人看!
Tags:千喜網(wǎng)絡服務器,容器主機,怎么解決docker容器無法通過IP訪問宿主機問題
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。