前因后果
1、在跳板機(jī)上使用ansible命令測(cè)試機(jī)器B時(shí),報(bào)錯(cuò)如下,于是就懷疑是網(wǎng)絡(luò)防火墻的問(wèn)題
10.10.0.86 | FAILED >> {
"failed": true,
"msg": "/bin/sh: /usr/bin/python: No such file or directory\r\nOpenSSH_7.6p1 Ubuntu-4ubuntu0.3, OpenSSL 1.0.2n 7 Dec 2017\r\ndebug1: Reading configuration data /etc/ssh/ssh_config\r\ndebug1: /etc/ssh/ssh_config line 19: Applying options for *\r\ndebug1: auto-mux: Trying existing master\r\ndebug1: mux_client_request_session: master session id: 2\r\nShared connection to 10.10.0.86 closed.\r\n",
"parsed": false
}
2、登錄到機(jī)器B上,這是一臺(tái)線上的機(jī)器,里面運(yùn)行docker容器,然后我看平時(shí)的經(jīng)驗(yàn)一般是網(wǎng)絡(luò)防火墻有問(wèn)題就直接
iptables -F
systemctl stop iptables
systemctl stop firewalld
3、然后我想著這應(yīng)該不會(huì)影響容器吧,就看容器的日志,沒(méi)想到10幾個(gè)全部報(bào)錯(cuò),都是連接不上,有點(diǎn)慌...,重啟容器,完全是起不來(lái)的,報(bào)錯(cuò)如下
docker: Error response from daemon: driver failed programming external connectivity on endpoint happy_ptolemy (9cedc114be35eb86cd6f7f7bb4f11f93b5f8d2c0745afc72664cef8e96aad439): iptables failed: iptables --wait -t filter -A DOCKER ! -i docker0 -o docker0 -p tcp -d 10.10.0.86 --dport 3000 -j ACCEPT: iptables: No chain/target/match by that name.
(exit status 1).
4、解決辦法,重啟docker
知識(shí)點(diǎn)
1、netfilter與iptables的關(guān)系
Netfilter是在Linux內(nèi)核中的一個(gè)防火墻框架,用于管理網(wǎng)絡(luò)數(shù)據(jù)包,不僅具有網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)的功能,也具有數(shù)據(jù)包內(nèi)容修改,以及數(shù)據(jù)包過(guò)濾等防火墻功能。利用在用戶空間的應(yīng)用軟件iptables等來(lái)控制Netfilter(iptables只是應(yīng)用軟件,工具)。

2、iptables與firewalld的關(guān)系
firewalld和iptables一樣都是應(yīng)用軟件,是工具,但是他的底層還是先通過(guò)iptables。
3、docker與firewalld、iptables的關(guān)系
1)docker安裝完成后,會(huì)自動(dòng)接管iptables或者firewalld,在docker run的時(shí)候,會(huì)自動(dòng)往iptables里加入規(guī)則;所以當(dāng)iptables重啟后會(huì)丟失,只有再重啟docker就好了的原因。
2)當(dāng)使用Systemd 的時(shí)候, firewalld 會(huì)在 Docker 之前啟動(dòng),但是如果你在 Docker 啟動(dòng)之后再啟動(dòng) 或者重啟 firewalld ,就需要重啟 Docker 進(jìn)程了。
總結(jié)
1、對(duì)生產(chǎn)環(huán)境的敬畏
2、對(duì)知識(shí)點(diǎn)的理解不透徹,不知道什么場(chǎng)景能用,什么場(chǎng)景不能用
3、后面還需要把防火墻的規(guī)則再深入了解
到此這篇關(guān)于Docker中iptables規(guī)則在iptables重啟后丟失的文章就介紹到這了,更多相關(guān)Docker中iptables規(guī)則重啟后丟失內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!