? ?
docker有自己的防火墻嗎?
有的,開啟防火墻端口:firewall-cmd --zone=public --add-port=80/tcp --permanent。但是docker的部分網(wǎng)絡(luò)功能是通過(guò)iptables轉(zhuǎn)發(fā)來(lái)完成的,轉(zhuǎn)發(fā)規(guī)則是docker進(jìn)程啟動(dòng)后動(dòng)態(tài)添加的,也就意味著如果你重啟iptables,將會(huì)丟失docker的轉(zhuǎn)發(fā)規(guī)則。
有兩種解決辦法:
1、動(dòng)態(tài)添加iptables規(guī)則,然后保存到防火墻軟件配置文件中
動(dòng)態(tài)添加iptables規(guī)則可以使規(guī)則立即生效(重啟失效)
sudo?iptables?-I?INPUT?1?-p?tcp?--dport?46379?-j?ACCEPT
這條命令會(huì)將規(guī)則添加到input規(guī)則的第一位 ,-I參數(shù)指定插入位置。不要使用-A參數(shù),該參數(shù)會(huì)將規(guī)則添加到input的最后一條,一般原來(lái)的最后一條都是reject規(guī)則,所以新插入的規(guī)則無(wú)法生效。
sudo?service?iptables?save
2、重啟iptable后重新啟動(dòng)docker
影響:重啟docker會(huì)導(dǎo)致全部容器重啟,有可能造成短時(shí)間的業(yè)務(wù)故障。
此方法不建議使用,如果已經(jīng)重啟防火墻,導(dǎo)致docker業(yè)務(wù)故障,使用下面命令重啟dcoker。
systemctl?restart?docker
它的基本操作是什么?
1、啟動(dòng)服務(wù):systemctl start firewalld.service
2、關(guān)閉服務(wù):systemctl stop firewalld.service
3、重啟服務(wù):systemctl restart firewalld.service
4、顯示服務(wù)的狀態(tài):systemctl status firewalld.service
5、開機(jī)自動(dòng)啟動(dòng):systemctl enable firewalld.service
6、禁用開機(jī)自動(dòng)啟動(dòng):systemctl disable firewalld.service
7、查看版本: firewall-cmd --version
8、查看幫助: firewall-cmd --help
9、顯示狀態(tài): firewall-cmd --state
10、查看所有打開的端口: firewall-cmd --zone=public --list-ports
11、更新防火墻規(guī)則: firewall-cmd --reload
12、查看區(qū)域信息: firewall-cmd --get-active-zones
13、查看指定接口所屬區(qū)域: firewall-cmd --get-zone-of-interface=eth0
14、拒絕所有包:firewall-cmd --panic-on
15、取消拒絕狀態(tài): firewall-cmd --panic-off
16、查看是否拒絕: firewall-cmd --query-panic
以上就是小編的分享,希望可以幫助到大家。