#docker #networking #docker-compose
#docker #сеть #docker-compose
Вопрос:
Я настроил простой контейнер, который запускает веб-приложение с помощью docker-compose
:
version: '3'
services:
app:
image: app/app:latest
ports:
- "8000:80"
Теперь к этому приложению можно получить доступ отовсюду (!) с помощью http://server_ip:8000
.
Как я могу ограничить доступ к приложению только из выбранной подсети, например 123.123.0.0/16
? Я попытался добавить порт в заданную зону с firewall-cmd
помощью, но эти правила не применяются к контейнерам Docker, поскольку сам Docker записывает правила Iptable.
К сожалению, это не сработало:
ports:
- "123.123.0.0/16:8000:80"
Комментарии:
1. Имеет ли сам хост несколько интерфейсов? Если это так, вы можете использовать соответствующий IP-адрес хоста в
ports:
; если нет, то вам нужно сделатьiptables
или что-то подобное, сделайте это за вас.2. Хост, то есть компьютер, на котором запущен контейнер, имеет несколько интерфейсов, да. К какому IP-адресу я должен обратиться? Использование localhost не устраняет проблему — порт «открывается миру».
3. Если у хоста есть интерфейсы
123.123.45.67
и10.20.30.40
, используйте IP-адрес из интерфейса, который находится в той подсети, которую вы хотите прослушать.