web-dev-qa-db-ja.com

Docker:Dockerの追加のiptablesルールを再作成する方法は?

Docker-demonが起動すると、iptablesにいくつかのルールが追加されます。 iptables -Fを介してすべてのルールが削除された場合、Dockerルールを再作成するには、Dockerデーモンを停止して再起動する必要があります。

Dockerに追加のルールを再追加させる方法はありますか?

26
kioopi

最良の方法は、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
19
theRemix

ホストでUbuntuを実行している場合は、iptables-saveユーティリティを使用して、dockerデーモンの起動後にiptablesルールをファイルに保存できます。その後、古いルールをフラッシュすると、iptables-restoreと保存されたルールファイルを使用して、元のdockerルールを単純に復元できます。

古いiptablesルールをすべて復元したくない場合は、保存したルールファイルを変更して、必要なルールのみを保持することができます。

別のオペレーティングシステムを実行している場合は、同様の代替手段を見つけることができます。

8
dcro