у меня сервер с двумя запущенными контейнерами docker. Одним из них является интерфейс небольшого приложения, подается с http-server
. Это приложение используется Javascript fetch API для извлечения данных из действительно простой базы данных на основе узла.JS' json-server ' модуль, который работает в другом контейнере.
случается, что json-server
делает порт 3000 доступным для внешнего пользователя, то есть, если кто-то указывает браузер http://example.com:3000
мои данные будут доступны без фильтрации и информация, представленная на сайте. Это не то, чего я хочу.
Я хотел бы заблокировать порт 3000 во внешнем мире, позволяя другому контейнеру docker получать данные, как обычно. Я думаю, что это может быть сделано на основе ИС, но я не знаю как это сделать.
это моя текущая конфигурация Iptables, в основном созданная самим Docker в качестве стандарта.
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy DROP)
target prot opt source destination
DOCKER-USER all -- anywhere anywhere
DOCKER-ISOLATION-STAGE-1 all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate RELATED,ESTABLISHED
DOCKER all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain DOCKER (1 references)
target prot opt source destination
ACCEPT tcp -- anywhere 172.17.0.2 tcp dpt:http-alt
ACCEPT tcp -- anywhere 172.17.0.3 tcp dpt:3000
Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target prot opt source destination
DOCKER-ISOLATION-STAGE-2 all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target prot opt source destination
DROP all -- anywhere anywhere
RETURN all -- anywhere anywhere
Chain DOCKER-USER (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
в конфигурации выше, IP 172.17.0.2 - это мое приложение, в то время как 172.17.0.3 IP-адрес контейнера моей базы данных.
frontend контейнер запускается с
docker run -p 80:8080 --name=frontend -d mtr/frontend
и
docker run -p 3000:3000 --name=database -d mtr/database
Я также рассматривал возможность наличия некоторого способа Docker, чтобы ограничить этот доступ, но после многих исследований я ничего не мог найти.
любые предложения о том, как я могу это сделать?