Docker:如何重新创builddockers额外的iptables规则?

当docker-demon启动时,它向iptables添加了一些规则。 当通过iptables -F删除所有规则时,我必须停止并重新启动docker演示以重新创builddockers规则。

有没有办法让docker重新添加它的附加规则?

最好的方法是重新启动docker服务,然后重新将docker规则添加到iptables中。 (基于deb: sudo service docker restart

但是,如果你只是想恢复这些规则,而不重新启动你的服务,我保存我的,所以你可以检查,并调整它为你工作,然后加载使用sudo iptables-restore ./iptables-docker-ports.backup

编辑并保存到./iptables-docker-ports.backup

 # Generated by iptables-save v1.4.21 on Thu Apr 30 20:48:42 2015 *nat :PREROUTING ACCEPT [18:1080] :INPUT ACCEPT [18:1080] :OUTPUT ACCEPT [22:1550] :POSTROUTING ACCEPT [22:1550] :DOCKER - [0:0] -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 172.17.0.0/16 ! -o docker0 -j MASQUERADE -A POSTROUTING -s 172.17.0.1/32 -d 172.17.0.1/32 -p tcp -m tcp --dport 80 -j MASQUERADE -A DOCKER ! -i docker0 -p tcp -m tcp --dport 3001 -j DNAT --to-destination 172.17.0.1:80 COMMIT # Completed on Thu Apr 30 20:48:42 2015 # Generated by iptables-save v1.4.21 on Thu Apr 30 20:48:42 2015 *filter :INPUT ACCEPT [495:53218] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [480:89217] :DOCKER - [0:0] -A FORWARD -o docker0 -j DOCKER -A FORWARD -o docker0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT -A FORWARD -i docker0 ! -o docker0 -j ACCEPT -A FORWARD -i docker0 -o docker0 -j ACCEPT -A DOCKER -d 172.17.0.1/32 ! -i docker0 -o docker0 -p tcp -m tcp --dport 80 -j ACCEPT COMMIT # Completed on Thu Apr 30 20:48:42 2015 

如果您在主机上运行Ubuntu,则可以使用iptables-save实用程序在启动docker守护程序后将iptables规则保存到文件中。 然后,一旦你刷新旧的规则,你可以简单地使用iptables-restore和保存的规则文件恢复原来的docker规则。

如果您不想恢复所有旧的iptables规则,则可以更改已保存的规则文件以仅保留所需的规则文件。

如果你正在运行另一个操作系统,你可能会find一个类似的select。