Lorsque le docker-démon démarre, il ajoute quelques règles à iptables. Lorsque toutes les règles sont supprimées via iptables -F
je dois arrêter et redémarrer le démon docker pour recréer les règles des dockers.
Existe-t-il un moyen pour que Docker rajoute ses règles supplémentaires?
la meilleure façon est de redémarrer votre service docker, puis il ajoutera à nouveau vos règles docker à iptables. (sur deb: Sudo service docker restart
)
cependant, si vous souhaitez simplement restaurer ces règles sans redémarrer votre service, j'ai enregistré le mien afin que vous puissiez l'inspecter et l'ajuster pour qu'il fonctionne pour vous, puis charger à l'aide de Sudo iptables-restore ./iptables-docker-ports.backup
éditez et enregistrez ceci dans ./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
Si vous exécutez Ubuntu sur l'hôte, vous pouvez utiliser le iptables-save
utilitaire pour enregistrer les règles iptables dans un fichier après avoir démarré le démon docker. Ensuite, une fois que vous avez vidé les anciennes règles, vous pouvez simplement restaurer les règles de docker d'origine à l'aide de iptables-restore
& le fichier de règles enregistré.
Si vous ne souhaitez pas restaurer toutes les anciennes règles iptables, vous pouvez modifier le fichier de règles enregistré pour ne conserver que celles dont vous avez besoin.
Si vous utilisez un autre système d'exploitation, vous pouvez trouver une alternative similaire.