dockeriptables

Docker: How to re-create dockers additional iptables rules?


When the docker-demon starts it adds a couple of rules to iptables. When all rules are deleted via iptables -F i have to stop and restart the docker demon to re-create dockers rules.

Is there a way to have docker re-add it's additional rules?


Solution

  • the best way is to restart your docker service, then it'll re-add your docker rules to iptables. (on deb-based: sudo service docker restart)

    however, if you just want to restore those rules without restarting your service, i saved mine so you can inspect, and adjust it to work for you, then load using sudo iptables-restore ./iptables-docker-ports.backup

    edit and save this to ./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