当 docker-demon 启动时,它会向 iptables 添加一些规则。
当通过 iptables -F
删除所有规则时,我必须停止并重新启动 docker 恶魔以重新创建 dockers 规则。
有没有办法让 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
关于Docker:如何重新创建 dockers 的附加 iptables 规则?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25917941/