Назад | Перейти на главную страницу

Как добавить компьютер во внутреннюю сеть докеров

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

У меня есть приложение, предназначенное для обнаружения и управления устройствами Интернета вещей в сети. У меня есть x1000 + docker-контейнеры, такие как различные устройства IoT, и теперь я хотел бы, чтобы мое приложение Windows (работающее на другом компьютере) могло выполнять поиск в виртуальной сети 172.17.x.x в Docker для стресс-тестирования.

Я мог бы настроить один узел докера, чтобы он действовал как pptp vpn, к которому я мог бы подключиться и к машине с Windows ... но мне интересно, есть ли более простое решение.

Это не полный ответ, потому что технически он не добавляет компьютер во внутреннюю сеть докеров, однако вы можете связываться с сетью докеров с компьютера в сети хостов.

Например, если у вас есть следующие реальные сетевые устройства:

  • 192.168.1.1 - (r1) сетевой маршрутизатор
  • 192.168.1.2 - (h2) случайный компьютер
  • 192.168.1.3 - (h3) хост-докер

и следующая сеть докеров:

  • 172.17.0.1 - (d1) докер-роутер (вам не нужно его настраивать ... он просто там)
  • 172.17.0.2 - (d2) узел докера

по умолчанию вы можете пинговать (r1), (h2), (h3) из (d2)

Однако если вы хотите выполнить эхо-запрос (d2) из ​​(h2), вам необходимо настроить маршрут для сети 172.17.0.0. Этого можно добиться, включив маршрутизацию на (h3) с помощью:

sysctl -w net.ipv4.ip_forward=1

а затем установите статический маршрут в (h2) или (r1) с помощью:

route add -net 172.17.0.0 netmask 255.255.0.0 gw 192.168.1.3

Конечным результатом будет то, что (h2) может связываться с любым устройством в сети 172.17.0.0 без необходимости связывать порты с хостом докера или настраивать псевдонимы для eth0 на хосте докера.