環境:html
刪除了docker的默認網橋docker0,自建了一個br0網橋(具體參考 https://blog.51cto.com/11804445/2048022 ),依次啓動了三個容器,分別是server1,server2,server3,當建立了前兩個容器後經過pipework分配了ip,分別是docker
server1 -> 192.168.1.2bash
server2 -> 192.168.1.3ide
這時候ping是通暢的,再去建立了server3並設置了ip 192.168.1.100,三個容器忽然不能訪問百度了...server
一臉尷尬...htm
解決:blog
參考 https://www.cnblogs.com/CloudMan6/p/7107407.html?utm_source=itdadao&utm_medium=referralip
在另一臺機器上面執行get
# iptables -a nat -S
獲得了it
-P PREROUTING ACCEPT -P INPUT ACCEPT -P OUTPUT ACCEPT -P POSTROUTING ACCEPT -N DOCKER -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER -A POSTROUTING -s 192.168.1.0/24 ! -o br0 -j MASQUERADE -A DOCKER -i br0 -j RETURN
發現四條防火牆的轉發規則...
# iptables -t nat -A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER # iptables -t nat -A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER # iptables -t nat -A POSTROUTING -s 192.168.1.0/24 ! -o br0 -j MASQUERADE # iptables -t nat -A DOCKER -i br0 -j RETURN
挨個執行一遍,回到容器,一切恢復正常...
之後別亂清空防火牆規則了...