Можно ли выставить порты докера для определенного интерфейса - PullRequest
0 голосов
/ 12 мая 2018

Мой сервер имеет два сетевых интерфейса, eth0 и wlan0, один из которых подключен к Интернету, а другой - к внутренней сети.Текущее решение предоставления портам контейнеров Docker с помощью docker-compose для определенного интерфейса заключается в использовании:

version: '2'

services:
  mosquitto:
    ports:
      - "192.168.0.1:1883:1883"

Это делает его хрупким, поскольку IP-адреса распределяются через DHCP.Используется несколько устройств, каждое из которых может иметь свой IP-адрес.Следовательно, возможно ли выставить порты только для определенного интерфейса?Кроме того, все работает на Resin.io , ограничивая настройку iptables и co.

1 Ответ

0 голосов
/ 14 мая 2018

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

Что касается динамических IP-адресов DHCP, вы можете следовать этому руководству смолы.io по настройке статических IP-адресов: https://docs.resin.io/reference/resinOS/network/2.x/#setting-a-static-ip. После настройки статического IP-адреса вы сможете использовать его в ports конфигурации.

Другой вариант - использовать iptables в контейнере приложения mosquitto. Это может быть достигнуто путем:

a) настройка параметров network_mode: host и privileged: true для службы Mosquitto

b) установка iptables как часть инструкции RUN в вашем Dockerfile (например, RUN apt-get update && apt-get install iptables)

c) настройка iptables (например, iptables -A INPUT -i eth0 -p tcp --destination-port 1883 -j DROP для сброса соединений с портом 1883 на интерфейсе wlan0)

В качестве дополнительного примечания, я бы посоветовал вам заглянуть на наш форум сообщества (https://forums.resin.io) на любые вопросы, которые могут у вас возникать в смолы). Наша база пользователей там довольно активна, и есть вероятность, что больше людей будут иметь похожие вопросы или полезные предложения для вас.

Спасибо!

...