Подключение к серверу 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. Удачи.