1. 程式人生 > 其它 >記錄一次與docker網路異常的鬥爭

記錄一次與docker網路異常的鬥爭

起因是用docker編譯buildroot時突然發現連線不上網路,也ping不通主機,嘗試重啟docker和ubuntu都無效,隨上網找解決辦法,看到

先停掉宿主機上執行的docker容器,然後執行以下命令
在宿主機執行:
pkill docker
iptables -t nat -F
ifconfig docker0 down
systemctl restart docker.service
重啟docker服務

嘗試了一番,沒用,並且執行iptables -t nat -F時把宿主機網路資訊清除掉了,差點出更大的問題。。
繼續找。。。

解決辦法:重建docker0網路恢復
pkill docker
iptables -t nat -F
ifconfig docker0 down
brctl delbr docker0
docker -d
systemctl restart docker

執行完也沒用,並且更大的問題出來了。。
docker start時會提示
Error response from daemon: failed to create endpoint frosty_poitras on network bridge: adding interface veth7270f0c to bridge docker0 failed: could not find bridge docker0: route ip+net: no such network interface
解決著解決這問題更多了。。
最後發現啟動前要先執行
brctl addbr docker0
才能起docker。
這個問題解決了,繼續找上一個問題。。
又發現ifconfig

時,docker沒有start前存在docker0 網絡卡,啟動後只存在veth7419f34這個docker建立的虛擬網絡卡。。以前是共存的來著/吐血
百度找不到解決辦法,先跳過吧。。
然後有人提到docker info能檢視啟動異常資訊

執行 docker info 時出現警告
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
解決辦法:
vi /etc/sysctl.conf
在檔案裡新增下面兩行程式碼:
net.bridge.bridge-nf-call-ip6tables = 1


net.bridge.bridge-nf-call-iptables = 1
然後 ESC 退出後 :wq 儲存,執行下面程式碼:
sysctl -p
再試一次 docker info 問題應該解決了

執行docker info,果然有如下提示,心中大喜,以為就要解決了,但是進度條告訴我並沒那麼簡單。。
照著執行完,然並卵。。並且docker stop後start以後,board info 還是一樣的提示。。
以為是沒生效,又寫入rc.local,重啟重啟重啟。。

centos機器 docker安裝完成後,輸入docker info命令,報如下警告資訊解決方法:
1)警告資訊如下:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
2)解決方法:修改系統檔案是的機器bridge模式開啟
設定機器開機啟動的時候執行下面兩條命令
編輯vim /etc/rc.d/rc.local新增下面兩條命令
echo 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
echo 1 > /proc/sys/net/bridge/bridge-nf-call-ip6tables
centos7需要增加執行許可權:
chmod +x /etc/rc,d/rc.local
3)重啟系統
————————————————
版權宣告:本文為CSDN博主「滄_海_笑」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處連結及本宣告。
原文連結:https://blog.csdn.net/gyy823/article/details/50168217

docker stop後執行了下cat /proc/sys/net/bridge/bridge-nf-call-iptables
大大的0輸出了出來。。。。。。。。。。。。。。
怪不得boardinfo會繼續提示。
反正這個方法也沒用,跳過繼續找別的方法吧。
找來找去還真沒了,天要亡我?
怎麼能輕言放棄!
三點啦!飲茶先!
正好坐著思考下,總結下經驗。
想了想不管是brctl,not find bridge,或者是bridge-nf-call-iptables is disabled,都是和bridge有關,而且各種跡象都表明,在虛擬機器建立bridge時,有其他東西和docker衝突了。
以前也遇到過這種問題,當時隨便搜了個帖子就解決了,會不會是當時什麼操作造成的影響呢?
隨翻出瀏覽記錄(果然沒事不要開無痕)

重建docker網路即可。具體步驟如下:
安裝brctl
apt-get install bridge-utils
yum install bridge-utils
停止docker服務
systemctl stop docker
重建 docker 網路
ifconfig docker0 down
brctl delbr docker0
重啟docker服務
systemctl start docker

看來當時安裝了bridge-utils工具,猜測罪魁禍首就是他
直接apt remove bridge-utils送走

大功告成,什麼問題都沒有了