一般來說安裝完docker之後,它就會在iptables裡建立幾個chain,它需要透過iptables來實現自身的網路功能。比如你啟動容器時候使用指定 -p 8080:8080引數,就會發現它往IPTABLES裡寫了一些東西(iptables -L DOCKER),換句話說如果你係統的iptables服務有問題,啟動容器是會失敗報錯的,應為它沒有辦法往iptables裡寫規則。
不過這個規則透過firewalld是看不到的,較新版本的redhat中加入FIREWALLD主要是為了引入區域概念、簡化操作和易於理解,說白了就是用於解放iptables冗長的命令。可他卻是透過IPTABLES來完成自身功能的,本質上FIREWALLD是建立在IPTABLES之上的一個應用。
結論:docker並不是繞過了防火牆,只是應為它往iptables裡寫了規則,你在firewalld裡看不到而已。docker這個“接管”iptables的問題引起了很多使用者的反對,但目前來說問題沒有直接解決。
一般來說安裝完docker之後,它就會在iptables裡建立幾個chain,它需要透過iptables來實現自身的網路功能。比如你啟動容器時候使用指定 -p 8080:8080引數,就會發現它往IPTABLES裡寫了一些東西(iptables -L DOCKER),換句話說如果你係統的iptables服務有問題,啟動容器是會失敗報錯的,應為它沒有辦法往iptables裡寫規則。
不過這個規則透過firewalld是看不到的,較新版本的redhat中加入FIREWALLD主要是為了引入區域概念、簡化操作和易於理解,說白了就是用於解放iptables冗長的命令。可他卻是透過IPTABLES來完成自身功能的,本質上FIREWALLD是建立在IPTABLES之上的一個應用。
結論:docker並不是繞過了防火牆,只是應為它往iptables裡寫了規則,你在firewalld裡看不到而已。docker這個“接管”iptables的問題引起了很多使用者的反對,但目前來說問題沒有直接解決。