Докер: Как воссоздать докеры дополнительные правила iptables?

Когда начинается демон docker-demon, он добавляет пару правил в iptables. Когда все правила удаляются с помощью iptables -F, я должен остановить и перезапустить демонстрацию докеров, чтобы воссоздать правила докеров.

Есть ли способ, чтобы докер снова добавил дополнительные правила?

Ответ 1

лучший способ - перезагрузить службу докеров, затем он снова добавит ваши правила докеров в 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

Ответ 2

Если вы используете Ubuntu на хосте, вы можете использовать утилиту iptables-save для сохранения правил iptables в файл после запуска демона докеров. Затем, как только вы очистите старые правила, вы можете просто восстановить исходные правила докеров с помощью iptables-restore и файла сохраненных правил.

Если вы не хотите восстанавливать все старые правила iptables, вы можете изменить файл сохраненных правил, чтобы сохранить только те, которые вам нужны.

Если вы используете другую операционную систему, вы можете найти аналогичную альтернативу.