Подключение к серверу BACNET на хост-машине с использованием клиентского контейнера

Я пытаюсь подключить мой клиент BACNET, который был упакован, и сервер BACNET, работающий на хост-компьютере. Я использую Docker для Windows на Windows 10 (хост-компьютер) с контейнерами Linux. Я пробовал следующее:

а. Публикация портов 47808 для клиентского контейнера с помощью команды run.

б. Запуск контейнера с network=host для доступа к сервисам localhost.

с. Попытался указать IP-адрес шлюза в качестве IP-адреса сервера с помощью команды run.

д. Запуск контейнера в той же подсети, что и мой сервер

е. Запуск контейнера с указанным IP-адресом хоста и опубликованными портами. Мой сервер bacnet, взятый с https://sourceforge.net/projects/bacnet/ всегда подключается к DockerNAT, 10.0.75.1? Есть идеи, почему это происходит? Серверное приложение - это не контейнер, а исполняемый файл.

IP-адрес сервера:10.0.75.1 (dockerNAT) Клиентский контейнер, работающий на хост-компьютере.

1 ответ

Из быстрого Google:

Для контейнеров Windows этот компонент не используется, и контейнеры и их порты доступны только через IP-адрес NATed.

Что касается BACnet, это поставит вас в мир боли. Для этого вам нужно будет использовать BACnet BBMD с поддержкой NAT в вашем контейнере, и ваш клиент BACnet должен будет зарегистрироваться как внешнее устройство BACnet. У стека BACnet в SourceForge, похоже, есть некоторая поддержка NAT (кажется, что код есть, но я никогда не проверял его в первоначальном виде).

Таким образом, то, что вы видите, "ожидаемо", но ваше решение потребует, чтобы вы стали гораздо более знакомыми с BBMD BACnet, чем вы когда-либо хотели бы. Внимательно прочитайте спецификацию BACnet. Удачи.

Другие вопросы по тегам