Не то решение на основе IPTables, которое вы ищете, но гораздо более простое решение - публикация только на определенном интерфейсе, а не на всех интерфейсах.И когда этот интерфейс является интерфейсом обратной связи, например, 127.0.0.1, вы сможете получить доступ к порту только локально.Для этого добавьте интерфейс в начало спецификации публикации:
docker run -p 127.0.0.1:4150:4150 ...
или аналогичный синтаксис в файле составления:
...
ports:
- 127.0.0.1:4150:4150
...
Почему командавы пытались использовать не работает, я думаю, вам нужно включить -m tcp
, чтобы соответствовать номеру порта TCP:
iptables -A DOCKER-USER -p tcp -m tcp --dport 4150 -j DROP