2014-09-18 8 views
15

Wenn der Docker-Dämon startet, fügt er iptables einige Regeln hinzu. Wenn alle Regeln über iptables -F gelöscht werden, muss ich den Docker Dämon stoppen und neu starten, um Dockers Regeln neu zu erstellen.Docker: Wie Dockers zusätzliche Iptables-Regeln neu erstellen?

Gibt es eine Möglichkeit, docker hinzuzufügen seine zusätzlichen Regeln?

Antwort

9

Der beste Weg besteht darin, den Docker-Dienst neu zu starten. Dann werden die Docker-Regeln wieder zu iptables hinzugefügt. (Auf deb-basiert: sudo service docker restart)

jedoch, wenn Sie nur diese Regeln wiederherstellen möchten, ohne Ihren Dienst neu zu starten, ich gespeichert Mine so können Sie überprüfen, und stellen Sie es für Sie zu arbeiten, dann laden mit sudo iptables-restore ./iptables-docker-ports.backup

bearbeiten und speichern diese auf ./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 
+0

Vielen Dank, es ist der einzige Beitrag, wo ich die Standard-Docker-Konfiguration zum Zurücksetzen meiner iptables-Regeln gefunden habe, perfekt! – meucaa

7

Wenn Sie Ubuntu auf dem Host ausführen, können Sie mit dem Dienstprogramm iptables-save die iptables-Regeln in einer Datei speichern, nachdem Sie den Docker-Dämon gestartet haben. Sobald Sie die alten Regeln bereinigt haben, können Sie einfach die ursprünglichen Docker-Regeln wiederherstellen, indem Sie die gespeicherte Regeldatei verwenden, indem Sie verwenden.

Wenn Sie nicht alle alten iptables-Regeln wiederherstellen möchten, können Sie die gespeicherte Regeldatei ändern, um nur diejenigen zu behalten, die Sie benötigen.

Wenn Sie ein anderes Betriebssystem ausführen, finden Sie möglicherweise eine ähnliche Alternative.

+1

Sind die Regeln für docker immer gleich? Kann ich sie meiner iptables-restore-Konfigurationsdatei dauerhaft hinzufügen? – Hubro

+0

Um es auszuarbeiten: Ich benutze iptables-persistent und eine benutzerdefinierte Regeldatei als Firewall. Immer wenn ich einen Port öffnen muss, bearbeite ich meine Regeldatei und verwende sie mit 'iptables-apply'. Ich halte eine saubere Struktur und viele Kommentare für die Dokumentation in meiner Regeldatei, also ist das Überschreiben keine Option. – Hubro

+0

Achten Sie darauf, die Regeln blind zu speichern/wiederherzustellen, da sich die IPs von Containern beim Neustart ändern können! – pHiL