Статья тут https://serveradmin.ru/zablokirovat-dostup-k-kontejneram-docker-iz-interneta/
Просмотреть набор правил на хосте
iptables -L -v -n
В данном примере eth0 - внешний интерфейс, который смотрит в интернет. Усложним задачу. Вам надо запретить доступ из интернета к контейнеру, но при этом разрешить доступ с определенных ip адресов. Нам нужно применить несколько правил и следить за тем,
чтобы разрешающие правила были выше запрещающих. Это можно сделать обычной нумерацией правил.
/sbin/iptables -I DOCKER-USER 2 -i eth0 -p tcp --dport 3307 -s 62.80.161.77 -j ACCEPT
/sbin/iptables -I DOCKER-USER 3 -i eth0 -p tcp --dport 3306 -j DROP
/sbin/iptables -I DOCKER-USER 3 -i eth0 -p tcp --dport 3307 -j DROP
Посмотреть список правил конкретной цепочки с нумерацией можно командой:
iptables -L DOCKER-USER --line-numbers -v -n
Если вам надо очистить конкретную цепочку с правилами, используйте команду.
/sbin/iptables -F DOCKER-USER
Если захотите заодно заблокировать посторонним людям доступ по ssh, добавьте следующие правила в цепочку INPUT.
/sbin/iptables -I INPUT 1 -p all -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -I INPUT 2 -i eth0 -p tcp --dport 22 -s 1.2.3.4 -j ACCEPT
/sbin/iptables -I INPUT 3 -i eth0 -p tcp --dport 22 -s 5.6.7.8 -j ACCEPT
/sbin/iptables -I INPUT 4 -i eth0 -p tcp --dport 22 -j DROP