Контейнеры Docker в определяемой пользователем сети Docker - доступ только с хоста - PullRequest
0 голосов
/ 15 апреля 2019

У меня есть приложение, которое создает несколько контейнеров в определяемой пользователем сети Docker .

В настоящее время у меня перенаправлено (сопоставлено) несколько портов из некоторых контейнеров в этой сети на хост-машину , чтобы я мог получить к ним доступ из хозяйничать .Взаимодействие между контейнерами (контейнер к контейнеру) происходит через псевдонимы , которые определены в сети.

К сожалению, порты карты для хоста публично выставлены на моем хост-компьютере.Есть ли способ, которым эти сопоставленные порты могут быть доступны только с localhost моего хост-компьютера?

Ответы [ 2 ]

4 голосов
/ 15 апреля 2019

Если вы используете docker, запустите -p [номер-порта]: [номер-порта] для переадресации ваших портов, вы можете использовать:

docker run -p 127.0.0.1:80:80 container

вместо:

docker run -p 80:80 container

По умолчанию Docker предоставляет ваши порты на всех доступных интерфейсах.

0 голосов
/ 15 апреля 2019

Если вы используете Linux, вы можете использовать iptables для этого.

iptables -A INPUT -p tcp -s localhost --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP

Просто измените 8080 на нужный порт и запускайте его несколько раз для каждого порта, который вы предоставляете.

Первая команда - «все, что приходит с локального хоста на порт 8080, разрешает это», а вторая - «сбросить что-либо, поступающее на порт 8080»

Это изменение не является постоянным, оно будет сброшено после перезагрузки, но вы можете сохранить его с помощью:

iptables-save > /etc/iptables.conf

И восстановить его с помощью:

iptables-restore < /etc/iptables.conf
...